Construct the following workflow:

Edit the FileReader node and load a list of paths to the BAMs

Edit the properties of the java node, in the "Additional Libraries" tab, load the jar of SortSam.jar

Edit the java snippet node, create a new column SORTED_BAM for the output.

and copy the following code:
// Your custom imports:
import net.sf.picard.sam.SortSam;
import java.io.File;
----------------------------------------------------------
// Enter your code here:
File input=new File(c_BAM);
//build the output filename
out_SORTED = input.getName();
if(!(out_SORTED.endsWith(".sam") || out_SORTED.endsWith(".bam")))
{
throw new Abort("not a SAM/BAM :"+c_BAM);
}
int dot=out_SORTED.lastIndexOf('.');
out_SORTED=new File(input.getParentFile(),out_SORTED.substring(0, dot)+"_sorted.bam").getPath();
//create a new instance of SortSam
SortSam cmd=new SortSam();
//invoke the instance
int ret=cmd.instanceMain(new String[]{
"I="+input.getPath(),
"O="+out_SORTED,
"SO=coordinate",
"VALIDATION_STRINGENCY=LENIENT",
"CREATE_INDEX=true",
"MAX_RECORDS_IN_RAM=500000"
});
if(ret!=0)
{
throw new Abort("SortSam failed with: "+c_BAM+" "+out_SORTED);
}
Execute KNIME, picard runs the job, and get the names of the sorted BAMs:
Edit:

The workflow was uplodaded on MyExperiment at http://www.myexperiment.org/workflows/3654.html.
That's it,
Pierre
No comments:
Post a Comment