public void setMd5(final String value) { setAttribute(MD5_TAG, value); }
public void setSpecies(final String value) { setAttribute("SP", value); }
public void setSpecies(final String value) { setAttribute(SPECIES_TAG, value); }
public void setMd5(final String value) { setAttribute(MD5_TAG, value); }
public void setDescription(final String value) { setAttribute(DESCRIPTION_TAG, value);}
public void setAssembly(final String value) { setAttribute(ASSEMBLY_TAG, value); }
public void setSpecies(final String value) { setAttribute(SPECIES_TAG, value); }
public void setDescription(final String value) { setAttribute(DESCRIPTION_TAG, value);}
public void setAssembly(final String value) { setAttribute("AS", value); }
public void setAssembly(final String value) { setAttribute(ASSEMBLY_TAG, value); }
@Override public final SAMSequenceRecord clone() { final SAMSequenceRecord ret = new SAMSequenceRecord(this.mSequenceName, this.mSequenceLength); ret.mSequenceIndex = this.mSequenceIndex; for (final Map.Entry<String, String> entry : this.getAttributes()) { ret.setAttribute(entry.getKey(), entry.getValue()); } return ret; }
@Override public final SAMSequenceRecord clone() { final SAMSequenceRecord ret = new SAMSequenceRecord(this.mSequenceName, this.mSequenceLength); ret.mSequenceIndex = this.mSequenceIndex; for (final Map.Entry<String, String> entry : this.getAttributes()) { ret.setAttribute(entry.getKey(), entry.getValue()); } return ret; }
public final SAMSequenceRecord clone() { final SAMSequenceRecord ret = new SAMSequenceRecord(this.mSequenceName, this.mSequenceLength); ret.mSequenceIndex = this.mSequenceIndex; for (final Map.Entry<String, String> entry : this.getAttributes()) { ret.setAttribute(entry.getKey(), entry.getValue()); } return ret; }
/** * Create one SAMSequenceRecord from a single fasta sequence */ private SAMSequenceRecord makeSequenceRecord(final ReferenceSequence refSeq) { final SAMSequenceRecord ret = new SAMSequenceRecord(refSeq.getName(), refSeq.length()); // Compute MD5 of upcased bases final byte[] bases = refSeq.getBases(); for (int i = 0; i < bases.length; ++i) { bases[i] = StringUtil.toUpperCase(bases[i]); } ret.setAttribute(SAMSequenceRecord.MD5_TAG, md5Hash(bases)); if (GENOME_ASSEMBLY != null) { ret.setAttribute(SAMSequenceRecord.ASSEMBLY_TAG, GENOME_ASSEMBLY); } ret.setAttribute(SAMSequenceRecord.URI_TAG, URI); if (SPECIES != null) { ret.setAttribute(SAMSequenceRecord.SPECIES_TAG, SPECIES); } return ret; }
/** * Create one SAMSequenceRecord from a single fasta sequence */ private SAMSequenceRecord makeSequenceRecord(final ReferenceSequence refSeq) { final SAMSequenceRecord ret = new SAMSequenceRecord(refSeq.getName(), refSeq.length()); // Compute MD5 of upcased bases final byte[] bases = refSeq.getBases(); for (int i = 0; i < bases.length; ++i) { bases[i] = StringUtil.toUpperCase(bases[i]); } ret.setAttribute(SAMSequenceRecord.MD5_TAG, md5Hash(bases)); if (GENOME_ASSEMBLY != null) { ret.setAttribute(SAMSequenceRecord.ASSEMBLY_TAG, GENOME_ASSEMBLY); } ret.setAttribute(SAMSequenceRecord.URI_TAG, URI); if (SPECIES != null) { ret.setAttribute(SAMSequenceRecord.SPECIES_TAG, SPECIES); } return ret; }
@Override public synchronized byte[] getReferenceBases(SAMSequenceRecord record, boolean tryNameVariants) { byte[] bases = findBases(record, tryNameVariants); if (bases == null) return null; cacheW.put(record.getSequenceName(), new WeakReference<byte[]>(bases)); String md5 = record.getAttribute(SAMSequenceRecord.MD5_TAG); if (md5 == null) { md5 = Utils.calculateMD5String(bases); record.setAttribute(SAMSequenceRecord.MD5_TAG, md5); } if (REF_CACHE != null) addToRefCache(md5, bases); return bases; }
public static void checkRefMD5(SAMSequenceDictionary d, ReferenceSequenceFile refFile, boolean checkExistingMD5, boolean failIfMD5Mismatch) throws NoSuchAlgorithmException { for (SAMSequenceRecord r : d.getSequences()) { ReferenceSequence sequence = refFile.getSequence(r.getSequenceName()); if (!r.getAttributes().contains(SAMSequenceRecord.MD5_TAG)) { String md5 = calculateMD5String(sequence.getBases()); r.setAttribute(SAMSequenceRecord.MD5_TAG, md5); } else { if (checkExistingMD5) { String existingMD5 = r.getAttribute(SAMSequenceRecord.MD5_TAG); String md5 = calculateMD5String(sequence.getBases()); if (!md5.equals(existingMD5)) { String message = String.format("For sequence %s the md5 %s does not match the actual md5 %s.", r.getSequenceName(), existingMD5, md5); if (failIfMD5Mismatch) throw new RuntimeException(message); else log.warn(message); } } } } }
public static SAMFileHeader buildSAMFileHeader(AlignmentHeader alignmentHeader){ SAMFileHeader samFileHeader = new SAMFileHeader(); for(Map.Entry<String, String> entry : alignmentHeader.getAttributes().entrySet()) { samFileHeader.setAttribute(entry.getKey(), entry.getValue()); } for(AlignmentHeader.SequenceRecord sq : alignmentHeader.getSequenceDiccionary()){ SAMSequenceRecord samSequenceRecord = new SAMSequenceRecord(sq.getSequenceName(), sq.getSequenceLength()); for(Map.Entry<String, String> entry : sq.getAttributes().entrySet()) samSequenceRecord.setAttribute(entry.getKey(), entry.getValue()); samFileHeader.addSequence(samSequenceRecord); } for(AlignmentHeader.ReadGroup rg : alignmentHeader.getReadGroups()){ SAMReadGroupRecord samReadGroupRecord = new SAMReadGroupRecord(rg.getId()); for(Map.Entry<String, String> entry : rg.getAttributes().entrySet()){ samReadGroupRecord.setAttribute(entry.getKey(), entry.getValue()); } samFileHeader.addReadGroup(samReadGroupRecord); } for(AlignmentHeader.ProgramRecord pg : alignmentHeader.getProgramRecords()){ SAMProgramRecord samProgramRecord = new SAMProgramRecord(pg.getId()); for(Map.Entry<String, String> entry : pg.getAttributes().entrySet()){ samProgramRecord.setAttribute(entry.getKey(), entry.getValue()); } samFileHeader.addProgramRecord(samProgramRecord); } samFileHeader.setComments(alignmentHeader.getComments()); return samFileHeader; } public static AlignmentHeader buildAlignmentHeader(SAMFileHeader samHeader, String studyName){
if (aliases != null) { samSequenceRecord.setAttribute(AN_ATTRIBUTE, String.join(",", aliases));
@DataProvider(name="testMergeDictionariesData") public Object[][] testMergeDictionariesData(){ final SAMSequenceRecord rec1, rec2, rec3, rec4, rec5; rec1 = new SAMSequenceRecord("chr1", 100); rec2 = new SAMSequenceRecord("chr1", 101); rec2.setMd5("dummy"); rec3 = new SAMSequenceRecord("chr1", SAMSequenceRecord.UNKNOWN_SEQUENCE_LENGTH); rec3.setMd5("dummy2"); rec4 = new SAMSequenceRecord("chr1", 100); rec4.setAttribute(SAMSequenceRecord.URI_TAG,"file://some/file/name.ok"); rec5 = new SAMSequenceRecord("chr2", 200); rec4.setAttribute(SAMSequenceRecord.URI_TAG,"file://some/file/name.ok"); return new Object[][]{ new Object[]{rec1, rec1, true}, new Object[]{rec2, rec2, true}, new Object[]{rec3, rec3, true}, new Object[]{rec4, rec4, true}, new Object[]{rec1, rec2, false},//since 100 != 101 in Length new Object[]{rec1, rec3, true}, new Object[]{rec1, rec4, true}, new Object[]{rec2, rec3, false}, // since MD5 is not equal new Object[]{rec2, rec4, false}, //length differs new Object[]{rec3, rec4, true}, new Object[]{rec4, rec5, false}, // different name }; }