extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/plugins/release/AlignedWriter.java

Code
Comments
Other
Rev Date Author Line
3936 16 May 16 nicklas 1 package net.sf.basedb.reggie.plugins.release;
3936 16 May 16 nicklas 2
4745 10 Apr 18 nicklas 3 import java.util.Arrays;
4745 10 Apr 18 nicklas 4 import java.util.HashSet;
5106 19 Nov 18 nicklas 5 import java.util.List;
4745 10 Apr 18 nicklas 6
4745 10 Apr 18 nicklas 7 import org.json.simple.JSONArray;
4745 10 Apr 18 nicklas 8
3936 16 May 16 nicklas 9 import net.sf.basedb.core.DbControl;
3936 16 May 16 nicklas 10 import net.sf.basedb.core.DerivedBioAssay;
4745 10 Apr 18 nicklas 11 import net.sf.basedb.core.File;
5106 19 Nov 18 nicklas 12 import net.sf.basedb.core.ItemSubtype;
5106 19 Nov 18 nicklas 13 import net.sf.basedb.core.Job;
4745 10 Apr 18 nicklas 14 import net.sf.basedb.core.Location;
5106 19 Nov 18 nicklas 15 import net.sf.basedb.reggie.dao.AlignedSequences;
3936 16 May 16 nicklas 16 import net.sf.basedb.reggie.dao.Annotationtype;
4745 10 Apr 18 nicklas 17 import net.sf.basedb.reggie.dao.Datafiletype;
5106 19 Nov 18 nicklas 18 import net.sf.basedb.reggie.dao.Subtype;
4745 10 Apr 18 nicklas 19 import net.sf.basedb.reggie.json.FilteredJSONArray;
4745 10 Apr 18 nicklas 20 import net.sf.basedb.util.filter.Filter;
4745 10 Apr 18 nicklas 21 import net.sf.basedb.util.filter.NotNullFilter;
3936 16 May 16 nicklas 22
3936 16 May 16 nicklas 23 /**
3936 16 May 16 nicklas 24   Cohort writer implementation for the aligned sequences data table.
3936 16 May 16 nicklas 25   @since 4.5
3936 16 May 16 nicklas 26 */
3936 16 May 16 nicklas 27 public class AlignedWriter 
3936 16 May 16 nicklas 28   extends CohortWriter 
3936 16 May 16 nicklas 29 {
3936 16 May 16 nicklas 30
4439 31 Mar 17 nicklas 31   private final ScriptWriter scriptWriter;
5106 19 Nov 18 nicklas 32   private final ItemSubtype hisatType;
4745 10 Apr 18 nicklas 33   private final Filter<File> fileFilterHisat;
3936 16 May 16 nicklas 34   
5090 14 Nov 18 nicklas 35   public AlignedWriter(DbControl dc, ReleaseWriterOptions options, ScriptWriter scriptWriter)
3936 16 May 16 nicklas 36   {
5090 14 Nov 18 nicklas 37     super(dc, options);
5090 14 Nov 18 nicklas 38
4439 31 Mar 17 nicklas 39     this.scriptWriter = scriptWriter;
5106 19 Nov 18 nicklas 40     this.hisatType = Subtype.HISAT_ALIGN_JOB.get(dc);
4745 10 Apr 18 nicklas 41     this.fileFilterHisat = new FileListFilter(new HashSet<String>(Arrays.asList(
4745 10 Apr 18 nicklas 42       "alignment.bai", "alignment.bam", "splicesites.tsv"
4745 10 Apr 18 nicklas 43       )), true, new FileLocationFilter(Location.EXTERNAL, true));
3936 16 May 16 nicklas 44   }
3936 16 May 16 nicklas 45   
4745 10 Apr 18 nicklas 46   @Override
5091 14 Nov 18 nicklas 47   public JSONArray toJSONObjects(CohortItem item)
4745 10 Apr 18 nicklas 48   {
5106 19 Nov 18 nicklas 49     if (scriptWriter == null) return null;
5106 19 Nov 18 nicklas 50     
5106 19 Nov 18 nicklas 51     List<AlignedSequences> alignments =  item.getAlignedSequences();
5106 19 Nov 18 nicklas 52     if (alignments.size() == 0) return null;
5106 19 Nov 18 nicklas 53     
5106 19 Nov 18 nicklas 54     for (AlignedSequences a : alignments)
4745 10 Apr 18 nicklas 55     {
5106 19 Nov 18 nicklas 56       DerivedBioAssay aligned = a.getItem();
5106 19 Nov 18 nicklas 57       Job job = aligned.getJob();
5106 19 Nov 18 nicklas 58       if (job != null && hisatType.equals(job.getItemSubtype()))
4745 10 Apr 18 nicklas 59       {
5106 19 Nov 18 nicklas 60         JSONArray jsonFiles = new FilteredJSONArray(new NotNullFilter<>(false));      
5142 22 Nov 18 nicklas 61         jsonFiles.addAll(item.getDataFilesJSON(Datafiletype.BAM, aligned, fileFilterHisat, false));
5142 22 Nov 18 nicklas 62         jsonFiles.addAll(item.getLinkedFilesJSON(aligned, fileFilterHisat, false));
4759 17 Apr 18 nicklas 63         if (jsonFiles.size() > 0)
4759 17 Apr 18 nicklas 64         {
4759 17 Apr 18 nicklas 65           String dataFilesFolder = (String)item.getAnnotationValue(Annotationtype.DATA_FILES_FOLDER, aligned);
5106 19 Nov 18 nicklas 66           String releaseDataFilesFolder = item.toReleaseFolder(dataFilesFolder);
5106 19 Nov 18 nicklas 67           scriptWriter.addFiles(releaseDataFilesFolder, dataFilesFolder, null, jsonFiles);
4759 17 Apr 18 nicklas 68         }
4745 10 Apr 18 nicklas 69       }
4745 10 Apr 18 nicklas 70     }
4745 10 Apr 18 nicklas 71
4745 10 Apr 18 nicklas 72     return null;
4745 10 Apr 18 nicklas 73   }
4745 10 Apr 18 nicklas 74
3936 16 May 16 nicklas 75 }