⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 annotation.java

📁 实现了基因组的显示功能
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//					while(itr.hasNext()) {
//						Long i = (Long)itr.next();
//						ProteinSequence s = (ProteinSequence)proteinSequence.get(i);
//						buffer.append ("<line index=\"" + i + "\">");
//						buffer.append (s.getAminoAcidSequence());
//						buffer.append ("</line>");
//					
//					}
//				}
////				Iterator itr = sequenceData.values().iterator();
////				int i=1;
////				while(itr.hasNext()) {
////					Sequence s = (Sequence)itr.next();
////					buffer.append ("<line index=\"" + i + "\">");
////					buffer.append (s.getBases());
////					buffer.append ("</line>");
////					i=i+s.getBases().length();
////				}
//				buffer.append("</proteinSequence>");
//				//zhangc added
//				buffer.append ("<qualifiers>");
//				if(f.getQualifiers()!= null)
//				{
//					
//					for (Iterator qiter = f.getQualifiers().listIterator(); qiter.hasNext();) 
//					{
//						Qualifier q= (Qualifier) qiter.next();
//						buffer.append ("<qualifier name=\""+q.getName()+"\" value=\""+q.getValue()+ "\"/>");
//						
//					}
//					
//				}	
//				buffer.append("</qualifiers>");
//				//zhangc added end
//				
//				buffer.append ("</feature>");
//				
//			}
//		}
//		buffer.append ("</features>");
//		buffer.append("</annotation>");
//		System.out.println("before out of m?");
//		return buffer.toString();
//	}
	
	
	public String toXml() {
		//TODO implement it using XStream
		
		StringBuffer buffer = new StringBuffer();
		buffer.append("<annotation id=\"" + id + "\" definition=\"" + definition + "\" length=\"" + length + "\">");
		/*buffer.append("<sequenceData>");
		Iterator itr = sequenceData.values().iterator();
		int i=0;
		while(itr.hasNext()) {
			Sequence s = (Sequence)itr.next();
			buffer.append ("<line index=\"" + i + "\">");
			buffer.append (s.getBases());
			buffer.append ("</line>");
			i++;
		}
		buffer.append("</sequenceData>");*/
	/*	buffer.append ("<features>");
		if (features != null) {
			for (Iterator iter = features.iterator(); iter.hasNext();) {
				Feature f = (Feature) iter.next();
				buffer.append ("<feature id=\"" + f.getId() + "\" name=\"" + f.getName() + "\" type=\"" + f.getType() + "\" frame=\"" + f.frame + "\" complement=\"" + f.isComplement() + "\">");
				buffer.append ("<location>");
				Location l = f.getLocation();
				if (l != null && l.getRangeList() != null) {
					for (Iterator iterator = l.getRangeList().iterator(); iterator
							.hasNext();) {
						Range r = (Range) iterator.next();
						buffer.append("<range start=\"" + r.getStart() + "\" end=\"" + r.getEnd() + "\"/>");
					}
				}
				buffer.append ("</location>");
				buffer.append ("</feature>");
				
			}
		}
		buffer.append ("</features>");*/
//		buffer.append("<sequenceData>");
		if(sequenceData != null)
		{
			Iterator itr =  sequenceData.keySet().iterator();
			while(itr.hasNext()) {
				Long i = (Long)itr.next();
				Sequence s = (Sequence)sequenceData.get(i);
//				buffer.append ("<line index=\"" + i + "\">");
//				buffer.append (s.getBases());
//				buffer.append ("</line>");
				s.getBases();
			
			}
		}
		
//		Iterator itr = sequenceData.values().iterator();
//		int i=1;
//		while(itr.hasNext()) {
//			Sequence s = (Sequence)itr.next();
//			buffer.append ("<line index=\"" + i + "\">");
//			buffer.append (s.getBases());
//			buffer.append ("</line>");
//			i=i+s.getBases().length();
//		}
//		buffer.append("</sequenceData>");
//		buffer.append ("<features>");
		if (features != null) {
			for (Iterator iter = features.iterator(); iter.hasNext();) {
				Feature f = (Feature) iter.next();
//				buffer.append ("<feature id=\"" + f.getId() + "\" name=\"" + f.getName() + "\" type=\"" + f.getType() + "\" frame=\"" + f.frame + "\" complement=\"" + f.isComplement() + "\">");
//				buffer.append ("<location>");
				Location l = f.getLocation();
				if (l != null && l.getRangeList() != null) {
					for (Iterator iterator = l.getRangeList().iterator(); iterator
							.hasNext();) {
						Range r = (Range) iterator.next();
//						buffer.append("<range start=\"" + r.getStart() + "\" end=\"" + r.getEnd() + "\"/>");
					}
				}
//				buffer.append ("</location>");
				//protein sequence
//				buffer.append("<proteinSequence>");
				Map<Long, ProteinSequence> proteinSequence = f.getProteinSequence();
				if(proteinSequence!= null && proteinSequence.size()!=0)
				{
					Iterator itr =  proteinSequence.keySet().iterator();
					while(itr.hasNext()) {
						Long i = (Long)itr.next();
						ProteinSequence s = (ProteinSequence)proteinSequence.get(i);
//						buffer.append ("<line index=\"" + i + "\">");
//						buffer.append (s.getAminoAcidSequence());
//						buffer.append ("</line>");
					
					}
				}
//				Iterator itr = sequenceData.values().iterator();
//				int i=1;
//				while(itr.hasNext()) {
//					Sequence s = (Sequence)itr.next();
//					buffer.append ("<line index=\"" + i + "\">");
//					buffer.append (s.getBases());
//					buffer.append ("</line>");
//					i=i+s.getBases().length();
//				}
//				buffer.append("</proteinSequence>");
				//zhangc added
//				buffer.append ("<qualifiers>");
				if(f.getQualifiers()!= null)
				{
					
					for (Iterator qiter = f.getQualifiers().listIterator(); qiter.hasNext();) 
					{
						Qualifier q= (Qualifier) qiter.next();
//						buffer.append ("<qualifier name=\""+q.getName()+"\" value=\""+q.getValue()+ "\"/>");
						
					}
					
				}	
//				buffer.append("</qualifiers>");
				//zhangc added end
				
//				buffer.append ("</feature>");
				
			}
		}
//		buffer.append ("</features>");
//		buffer.append("</annotation>");
		System.out.println("before out of m annotation?");
		return buffer.toString();
	}
	
	public void fromXml (String xml) throws Exception {
		//TODO implement it using XStream
		XMLInputFactory inputFactory = XMLInputFactory.newInstance();
		XMLStreamReader reader =
		   inputFactory.createXMLStreamReader(new StringReader(xml));
		while(reader.hasNext()) {
		   int event = reader.next();
		   if (event == XMLStreamReader.START_ELEMENT) {
			   String tag = reader.getLocalName();
			   if (tag.equals("annotation")) {
				   this.id=Long.parseLong(reader.getAttributeValue(null, "id"));
				   this.definition= reader.getAttributeValue(null, "definition");
				   this.length=Long.parseLong(reader.getAttributeValue(null, "length"));
			   }
			   if (tag.equals("sequenceData")) {
				   this.sequenceData = new TreeMap<Long, Sequence> ();
			   }
			   if (tag.equals("line")) {
				   long index = Long.parseLong(reader.getAttributeValue(null, "index"));
				   String bases = reader.getElementText();
				   Sequence s = new Sequence();
				   s.setBases(bases);
				   s.setStart(new Long (index));
				   this.sequenceData.put (index, s);
			   }
			   if (tag.equals("features")) {
				   this.features = new ArrayList<Feature> ();
			   }
			   if (tag.equals("feature")) {
				   Feature f = new Feature();
				   f.setId(Long.parseLong(reader.getAttributeValue(null, "id")));
				   f.setName(reader.getAttributeValue(null, "name"));
				   f.setType(reader.getAttributeValue(null, "type"));
				   f.setFrame(Integer.parseInt(reader.getAttributeValue(null, "frame")));
				   f.setComplement(Boolean.parseBoolean(reader.getAttributeValue(null, "complement")));
				   // get location 
				   reader.next();
				   Location l = new Location();
				   f.setLocation(l);
				   l.rangeList = new ArrayList<Range>();
				   while (reader.hasNext()) {
					   // get Ranges
					   event = reader.next();
					   if (event == XMLStreamReader.START_ELEMENT) {
						   tag = reader.getLocalName();
						   if (tag.equals("range")) {
							   Range r = new Range();
							   r.setStart(Long.parseLong(reader.getAttributeValue(null, "start")));
							   r.setEnd(Long.parseLong(reader.getAttributeValue(null, "end")));
							   l.rangeList.add(r);
						   }
						   if (reader.getLocalName().equals("location")) {
							   break;
						   }
					   }
				   }
				   this.features.add(f);
			   }
		   }
		}
	}

	/**
	 * @return pathway list
	 * 
	 * @hibernate.bag name="pathway" lazy="false" cascade="all"
	 * @hibernate.key  column="annotation_id" not-null="true"
     * @hibernate.collection-one-to-many  class="org.csbl.genome.model.Pathway" 
	 */
	public List<Pathway> getPathways() {
		return pathways;
	}

	public void setPathways(List<Pathway> pathways) {
		this.pathways = pathways;
	}
	
	public String getSubSequence(int start, int end){
		StringBuffer subString= new StringBuffer();
		Iterator itr = this.sequenceData.keySet().iterator();
		
		while(itr.hasNext()){
			Long index = (Long)itr.next(); 
			String temp = this.sequenceData.get(index).getBases();
			subString.append(temp);
		}
		//return this.sequenceData.toString().substring(start, end);
		//return subString.toString().substring(start, end);
		return subString.substring(start, end);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -