Unconfigured Ad

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • jarwulf
    Junior Member
    • Apr 2012
    • 9

    #1

    bam converting speed

    I've taken another crack at an old problem I haven't been able to fix. My goal is to be able to recreate in java with picard an acceptable substitute to bedtools bam to bed conversion. The problem is my code for some reason takes an absurdly long time to run even with a small file. I was hoping someone would know if I could make any changes that could speed up the conversion.


    This part creates a new Swingworker task where a bam file will be converted and executes it. It also adds a listener to copy the converted file once it is finished and inform the user.

    Code:
    final BamConverter task = new BamConverter(chosenFile, txtArea);
    
        		task.addPropertyChangeListener(
    
        			    new PropertyChangeListener() {
    
        			        @Override
        			            public void propertyChange(PropertyChangeEvent evt) {
    
        			           if (task.getState() == StateValue.DONE) {
    
        			                   try {
        			                   chosenFileHolder = task.get();
        			                   chosenFile = chosenFileHolder;
        			               	txtArea.append("BAM2BED complete!\n");
        			        		txtArea.setCaretPosition(txtArea.getText().length());
        			                   } catch (InterruptedException exp) {
        			                   exp.printStackTrace();
        			                } catch (ExecutionException exp) {
        			                   exp.printStackTrace();
        			                   }
        			           }
        			            }
        			    }
        			);
        		
       
        		task.execute();
            }

    The task has a loop where the actual conversion takes place. The loop is seen below. Bedtools can converted a file in maybe 4 minutes or so but for some reason this loop seems to run on the same file for nearly an hour without signs of stopping. I'm okay with something a little slower than bedtools but the current speed is way too slow. Is this an inherent deficiency or would there be a way to improve the loop? Or maybe I made an error somewhere?


    Code:
    try {
        	
    
        	
        	 FileWriter fstream = new FileWriter(BAMconverted);
             BufferedWriter out = new BufferedWriter(fstream);
        	
        while (iterator.hasNext()) {
            final SAMRecord record = iterator.next();
            if (record.getReadUnmappedFlag()) {
                continue;
            }
    
           
            out.write(record.getReferenceName() + "\t" +
                    (record.getAlignmentStart() - 1) + "\t" + //subtract 1 to shift from one-based to zero-based
                    (record.getAlignmentEnd() - 1 + 1) + "\t" + //subtract 1 to shift from one-based to zero-based, and
                                                                // then add 1 to shift from inclusive to exclusive
                    record.getReadName() + "\t" +
                    record.getMappingQuality() + "\t" +
                    (record.getReadNegativeStrandFlag()? "-": "+") );
            
            cstepcount2=cstepcount;
            Integer.toString(cstepcount2);
            innerTextArea.append(""+cstepcount2 + "\n");
            innerTextArea.setCaretPosition(innerTextArea.getText().length());
            cstepcount++;
        
            if ((cstepcount/1000)==0)
            {
    
                //processing stuff
    
                publish( cstepcount ); // Tell the GUI about counter tracking the conversion steps completed.
            }
        
        
        }
        out.close();
        }
        catch(IOException ie){
            ie.printStackTrace();
           }
       
        reader.close();

Latest Articles

Collapse

  • SEQadmin2
    Multiomic Liquid Biopsy: What DNA/RNA Panels Reveal That DNA Alone Can’t
    by SEQadmin2



    Tumors contain complex mixtures of cell populations that evolve in response to treatment and host-specific factors. Tissue biopsies provide only static snapshots of a tumor’s state. But what if we could follow that evolution over time using a minimally invasive technique?

    Liquid biopsies can detect tumor-derived material circulating in the bloodstream, providing a way to study treatment response, detect emerging resistance, and discover new biomarkers. Circulating
    ...
    10-14-2026, 09:55 AM
  • SEQadmin2
    New Genomics Technologies Take Aim at Long-Standing Limits
    by SEQadmin2


    Researchers using sequencing and genomics tools often have to make trade-offs. They can choose between speed or scale, short reads or long-range information, or targeted panels or a view of the whole transcriptome. New technologies that have been released this year are built to address those tough choices.

    We asked six companies the same four questions to learn about their latest products. The new technologies bring a lot to the table, including rethinking sequencing
    ...
    09-28-2026, 10:25 AM

ad_right_rmr

Collapse

News

Collapse

Topics Statistics Last Post
Started by SEQadmin2, Yesterday, 11:13 AM
0 responses
21 views
0 reactions
Last Post SEQadmin2  
Started by SEQadmin2, Yesterday, 10:48 AM
0 responses
18 views
0 reactions
Last Post SEQadmin2  
Started by SEQadmin2, 10-15-2026, 10:52 AM
0 responses
36 views
0 reactions
Last Post SEQadmin2  
Started by SEQadmin2, 10-14-2026, 05:39 AM
0 responses
42 views
0 reactions
Last Post SEQadmin2  
Working...