Changeset 10


Ignore:
Timestamp:
Nov 5, 2012, 2:41:33 PM (7 years ago)
Author:
w.spee@…
Message:

added option -t to output leading t and first color call for all reads
added options -p to print a prefix in the output fastq names en fastq entry names
removed the tag name from the readname and added /1 for forward and /2 for reverse tags to the readname. (ilumnia style readnames required for pairing module of bwa)

Location:
XSQConverterJava/src/xsqconverterjava2
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • XSQConverterJava/src/xsqconverterjava2/BWACSFastQEntry.java

    r6 r10  
    2323    private StringBuilder readQvalueSb = null;   
    2424   
     25    private boolean printLeadingTandFirstColor;
    2526   
    26     public BWACSFastQEntry()   
     27   
     28    public BWACSFastQEntry(boolean printLeadingTandFirstColor)   
    2729    {       
    2830       
     31        this.printLeadingTandFirstColor = printLeadingTandFirstColor;
    2932       
    3033        csToBWACSMap = new HashMap<Integer,Character>();
     
    8790        sb.append(seqName);
    8891        sb.append("\n");
    89         sb.append(readCSSb.substring(1));
     92        if(printLeadingTandFirstColor)
     93        {
     94            sb.append("T");
     95            sb.append(readCSSb);
     96        }
     97        else
     98        {
     99             sb.append(readCSSb.substring(1));
     100        }
    90101        sb.append("\n");
    91102        sb.append(description);
  • XSQConverterJava/src/xsqconverterjava2/CSFastQEntry.java

    r6 r10  
    2323    private StringBuilder readQvalueSb = null;   
    2424   
     25    private boolean printLeadingTandFirstColor;
    2526   
    26     public CSFastQEntry()   
     27   
     28    public CSFastQEntry(boolean printLeadingTandFirstColor)   
    2729    {       
     30        this.printLeadingTandFirstColor = printLeadingTandFirstColor;
     31       
    2832        intToCharMap = new HashMap<Integer,Character>();
    2933        intToCharMap.put(0, '0');
     
    8589        sb.append(seqName);
    8690        sb.append("\n");
    87         sb.append(readCSSb.substring(1));
     91       
     92        if(printLeadingTandFirstColor)
     93        {
     94            sb.append("T");
     95            sb.append(readCSSb);
     96        }
     97        else
     98        {
     99             sb.append(readCSSb.substring(1));
     100        }
     101       
     102       
    88103        sb.append("\n");
    89104        sb.append(description);
  • XSQConverterJava/src/xsqconverterjava2/FastQWriter.java

    r7 r10  
    3030   
    3131    private String libraryName;
    32 //    private String laneNr;
    33 //    private String dateString;
     32
    3433    private String tagName;
    3534    private String currentTileName;
     35    private Boolean printLeadingTandFirstColor;
     36   
     37    private String outputPrefix;
     38   
     39   
    3640   
    3741   
     
    4044    /**
    4145     * Writes FastQentries to an output file.
    42      * @param libraryName name of the library for which reads are being converted.
     46     * @param libraryNameWithBarCode name of the library for which reads are being converted.
    4347     * @param outputDir output directory where the fastq file should be written
    4448     * @param chunkSize amount or reads after which a new fastq chunk file should be opened. 
     
    4751     * @param tagName tag name that should be used in the name of the fastq files
    4852     */
    49     public FastQWriter(String libraryName, File outputDir, long chunkSize,  String tagName, boolean bwaSpecific) {
    50         this.libraryName = formatLibraryTagName(libraryName,tagName);
    51 //        this.dateString = dateString;
    52 //        this.laneNr = laneNr;
     53    public FastQWriter(String libraryNameWithBarCode, File outputDir, long chunkSize,  String tagName, boolean bwaSpecific, boolean printLeadingTandFirstColor, String outputPrefix) {
     54        this.libraryName = splitLibraryName(libraryNameWithBarCode);
    5355        this.chunkSize = chunkSize;
    5456        this.tagName = tagName;
    5557        this.bwaSpecific = bwaSpecific;
     58        this.printLeadingTandFirstColor = printLeadingTandFirstColor;
     59        this.outputPrefix = outputPrefix;
     60       
    5661        createOutputDir(outputDir, libraryName, tagName);
    5762       
     
    9095        chunkFileName.append(chunkCounter);
    9196        chunkFileName.append('.');
    92 //        chunkFileName.append("lane");
    93 //        chunkFileName.append(laneNr);
    94 //        chunkFileName.append("_");
     97       
     98        if(!outputPrefix.isEmpty())
     99        {
     100            chunkFileName.append(outputPrefix);
     101            chunkFileName.append("_");
     102        }       
     103       
    95104        chunkFileName.append(libraryName);
    96 //        chunkFileName.append("_");
    97 //        chunkFileName.append(tagName);
    98 //        chunkFileName.append("_");
    99 //        chunkFileName.append(dateString);
     105        chunkFileName.append("_");       
     106        chunkFileName.append(tagName);
    100107        chunkFileName.append(".fastq");   
    101108       
     
    121128        try {
    122129           
    123             fastQEntry.setSeqName(libraryName+"_"+currentTileName+"_"+readCounter );           
    124            
     130            //set the sequence name based on the output prefix, lib name, current tile, read counter and /1 or /2 postfix for first or second of pair
     131            StringBuilder seqName = new StringBuilder();
     132            if(!outputPrefix.isEmpty())
     133            {
     134                seqName.append(outputPrefix);
     135                seqName.append("_");
     136            }
     137            seqName.append(libraryName);
     138            seqName.append("_");
     139            seqName.append(currentTileName);
     140            seqName.append("_");
     141            seqName.append(readCounter);           
     142            if(tagName.contains("F3") || tagName.contains("f3") )
     143            {
     144                seqName.append("/1");
     145            }
     146            else
     147            {
     148                seqName.append("/2");               
     149            }
     150           
     151            fastQEntry.setSeqName(seqName.toString());           
     152                       
    125153            if(readCounter % chunkSize == 0 && readCounter != 0)
    126154            {
     
    160188        if(bwaSpecific)
    161189        {
    162             cSFastQEntry = new BWACSFastQEntry();
     190            cSFastQEntry = new BWACSFastQEntry(printLeadingTandFirstColor);
    163191        }
    164192        else
    165193        {
    166             cSFastQEntry= new CSFastQEntry();
     194            cSFastQEntry= new CSFastQEntry(printLeadingTandFirstColor);
    167195        }
    168196        return cSFastQEntry;
     
    179207    }
    180208   
    181     private String formatLibraryTagName(String libraryName, String tagName)
    182     {
    183         String[] libraryNameSplit = libraryName.split("_");
    184         libraryName = libraryNameSplit[0];
    185        
    186         String libAndTagName =  libraryName +"_"+ tagName;
    187         return libAndTagName;
     209    private String splitLibraryName(String libraryNameWithBarCode)
     210    {
     211        String[] libraryNameSplit = libraryNameWithBarCode.split("_");
     212        libraryName = libraryNameSplit[0];       
     213       
     214        return libraryName;
    188215       
    189216    }
  • XSQConverterJava/src/xsqconverterjava2/XSQConverterJava.java

    r9 r10  
    3333               
    3434        Options options = new Options();
    35         options.addOption("i", true, "XSQ input file path. XSQ file name should be $machineName_$dateString_$projectName_$owner_$laneNr.xsq");
     35        options.addOption("i", true, "XSQ input file path.");
    3636        options.addOption("o", true, "output directory path");
    3737        options.addOption("c", true, "output fastq chunksize. Default is 1000000");
    3838        options.addOption("l", true, "library which should be converted. For multiple libraries use this argument multiple times");
    3939        options.addOption("b", true, "barcodes which should be converted. For multiple barcodes use this argument multiple times");
    40         options.addOption("d", false, "display all libraries names");
     40        options.addOption("d", false, "display all libraries names and exit the program.");
    4141        options.addOption("j", false, "display Java path");
    42         options.addOption("f", true, "fastQ dialect / format. Either BWA or Sanger." );       
     42        options.addOption("f", true, "fastQ dialect / format. Either BWA or Sanger." );
     43        options.addOption("t", false, "print leading T and 1st color call of reads. Not needed for applications that work in colorspace, but some want to delete the leading T and 1st color call themselves." );
     44        options.addOption("p", true, "output prefix. The given prefix will be used in the name of the fastq files and the name of the fastq read entries. Usefull for example for adding run and lane information to the output.");
    4345        options.addOption("h", false, "print this message");
    4446       
     
    4951        } catch (ParseException ex) {
    5052            Logger.getLogger(XSQConverterJava.class.getName()).log(Level.SEVERE, null, ex);
     53        }
     54       
     55        if(cmd.getOptions().length == 0)
     56        {
     57            printHelp(options);
    5158        }
    5259       
     
    8188            bwaSpecific = true;
    8289        };
     90       
     91        Boolean printLeadingTand1stColour = false;
     92        if(cmd.hasOption("t"))
     93        {
     94            printLeadingTand1stColour = true;
     95        };
     96       
     97        String outputPreFix = "";
     98        if(cmd.hasOption("p"))
     99        {
     100            outputPreFix = cmd.getOptionValue("p");
     101        }
     102       
     103       
    83104         
    84105       
     
    102123        XSQFile xSQFile = new XSQFile(xsqFilePath);
    103124        try {
    104             xSQFile.processXSQFile(outputDir, chunkSize, librariesSubSet,barcodes,  bwaSpecific);
     125            xSQFile.processXSQFile(outputDir, chunkSize, librariesSubSet,barcodes,  bwaSpecific, printLeadingTand1stColour, outputPreFix);
    105126        } catch (Exception ex) {
    106127           ex.printStackTrace();
  • XSQConverterJava/src/xsqconverterjava2/XSQFile.java

    r8 r10  
    188188     * @param chunkSize the chunksize to use for splitting the output fastQ files.
    189189     */
    190     public void processXSQFile(File outputDir, long chunkSize, Map<String, String> librariesSubSetMap, Map<Integer, Integer> barCodes , boolean BWASpecific) throws Exception {
     190    public void processXSQFile( File outputDir,
     191                                long chunkSize,
     192                                Map<String, String> librariesSubSetMap,
     193                                Map<Integer, Integer> barCodes ,
     194                                boolean BWASpecific,
     195                                boolean printLeadingTand1stColour,
     196                                String outputPrefix
     197                                                                          ) throws Exception {
    191198       
    192199        this.outputDir = outputDir;       
     
    215222        }
    216223               
    217         processLibraries(librariesToProcess, outputDir, chunkSize, usedTags, BWASpecific);       
     224        processLibraries(librariesToProcess, outputDir, chunkSize, usedTags, BWASpecific, printLeadingTand1stColour, outputPrefix);       
    218225    }
    219226   
     
    292299     * @param libraries the list of libraries to process
    293300     */
    294     private  void processLibraries(List<Library> libraries, File outputDir,long chunkSize, Map<String,Integer> usedTags, boolean bwaSpecific)
     301    private  void processLibraries(List<Library> libraries, File outputDir,long chunkSize, Map<String,Integer> usedTags, boolean bwaSpecific, boolean printLeadingTandFirstColor, String outputPreFix)
    295302    {
    296303        long totalReadCounter = 0;
     
    301308           {
    302309//             fastQWriterPerTag.put(tag, new FastQWriter(libraryObject.toString(), outputDir, chunkSize, dateString, laneNr, tag));
    303                fastQWriterPerTag.put(tag, new FastQWriter(library.getName(), outputDir, chunkSize, tag, bwaSpecific));
     310               fastQWriterPerTag.put(tag, new FastQWriter(library.getName(), outputDir, chunkSize, tag, bwaSpecific, printLeadingTandFirstColor, outputPreFix));
    304311           }           
    305312           
     
    312319           {
    313320               metrics.append(fastQWriter.getLibraryName());
     321               metrics.append("_");
     322               metrics.append(fastQWriter.getTagName());
    314323               metrics.append("\t");
    315324               metrics.append(fastQWriter.getReadCounter());
  • XSQConverterJava/src/xsqconverterjava2/testStart.java

    r8 r10  
    2525        List<String> arguments = new ArrayList<String>();
    2626        arguments.add("-i");
    27         arguments.add("/home/wim/Analysis/xsq_conversion_test/HU02_20120518_MixedRunRNA4CChIP_Nico_05.xsq");
     27        arguments.add("/home/wim/Analysis/xsq_conversion_test/HU02_20120504_WigardBCMatePair_Nico_02.xsq");
    2828        arguments.add("-o");
    29         arguments.add("ls/home/wim/Analysis/xsq_conversion_test/HU02_output8");
     29        arguments.add("/home/wim/Analysis/xsq_conversion_test/new_output_name_MP_test");
    3030        arguments.add("-f");
    3131        arguments.add("bwa");
    32        
    33        
    34        
    35        
    36        
    37                
    38        
    39        
    40        
    41 
     32        arguments.add("-t");
     33        arguments.add("-c");
     34        arguments.add("100000000000");   
     35        arguments.add("-p");
     36        arguments.add("WigardBCMatePair_02");   
    4237       
    4338        XSQConverterJava.main(arguments.toArray(new String[0]));
Note: See TracChangeset for help on using the changeset viewer.