亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? treejuxtaposer.java

?? 生物物種進化歷程的演示
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
 	ATD.setKey(treeDrawers.size());	ATD.setLineThickness(linethickness);	treeDrawers.add(ATD);	ATD.setExpandLeaves(1, false);//	ATD.setDimColors(true);//	ATD.drawDirection = getLeftRight();	return ATD;    }	/**	  * Delete a tree from "trees", clean up all the data structures	 * constructed for tree comparisons.	 *	 * @author  	 * @see AccordionDrawer.AccordionDrawer.close	 * @see AccordionDrawer.AccordionTreeDrawer.close	 * @see AccordionDrawer.GridCell.close	 * @see AccordionDrawer.Tree.close	 * @see AccordionDrawer.TreeEdge.close	 * @see AccordionDrawer.TreeNode.close	 * @see Parse.Newick.close	 * @see Tree2Tree.close	 * @see TreePairs.removeTree	 */	public void deleteTrees(int[] treeNums) {   		System.out.println("VM memory before operation: "+Runtime.getRuntime().freeMemory()) ;		System.out.println("Total memory before operation: "+Runtime.getRuntime().totalMemory()) ; 		for (int i = treeNums.length-1; i >= 0; i--)		{			Tree currTree = (Tree)trees.get(treeNums[i]);			AccordionTreeDrawer atd = (AccordionTreeDrawer)treeDrawers.get(treeNums[i]);			if (atd.tree != currTree)			{				System.out.println("Error: mismatched tree/drawer in delete: " + currTree + " != " + atd.tree);				continue;			}			Component c = atd.getCanvas();			TPs.removeTree(currTree);			currTree.close();			trees.remove(currTree);			atd.shutdown();			atd.cvsDispose();			treeDrawers.remove(atd);			drawPanel.remove(c);			treeCount--;		}		drawPanel.validate();	}		public void postDeleteTrees()	{	  	  addLeaves();//	  clearGroup(diffGroup);	  for (int i=0; i<groups.size(); i++)	  	clearGroup(i);       	  for (int i = 0; i < treeDrawers.size(); i++)	  {	  	AccordionTreeDrawerFinal atdA = (AccordionTreeDrawerFinal)treeDrawers.get(i);	  	for (int j = i+1; j < treeDrawers.size(); j++)	  	{	  		AccordionTreeDrawerFinal atdB = (AccordionTreeDrawerFinal)treeDrawers.get(j);	  		doStructuralDiff(atdA, atdB, diffGroup);	  		doStructuralDiff(atdB, atdA, diffGroup);	  	}	  }		System.gc();		System.out.println("VM memory after operation: "+Runtime.getRuntime().freeMemory()) ;		System.out.println("Total memory after operation: "+Runtime.getRuntime().totalMemory()) ;       		changedMarks();		updateTitle();		requestRedrawAll();	}    /**     * Fetch a tree by its name.  This is done by linear search as we     * do not expect to have many trees in memory.     *     * @author Li Zhang     */    public Tree getTreeByName(String name) {		for(int i=0; i<trees.size(); i++) {	    Tree t = (Tree)trees.get(i);	    if(t.getName().equals(name)) return t;	}	return null;	    }	    protected void addAction(){    	ui.addAction();    }//	private void quitAction()    protected void quitAction()	{		// add other actions if needed when the quit menu option is selected		//System.exit(0);		ui.quitAction();	}    public void changedMarks() {    	Iterator tdIter = treeDrawers.iterator();	while (tdIter.hasNext()) {	    AccordionTreeDrawer atd = (AccordionTreeDrawer)tdIter.next();	    atd.changedMarks();	    //System.out.println("changedmarks, cache: "+atd.cacherange);	}    }	    public void requestRedrawAll() {    	Iterator tdIter = treeDrawers.iterator();	while (tdIter.hasNext()) {	    AccordionTreeDrawer atd = (AccordionTreeDrawer)tdIter.next();	    atd.requestRedraw();	}    }    // resets the leaves and recreates the node hash set and search array    public void addLeaves()    {    	// hash set has constant time verification that a similarly named node has already been added    	// a tree set is also capable of doing this job, but requires rebalancing    	HashSet hn;    	if (trees.size() > 0)    		hn = new HashSet(((Tree)trees.get(0)).nodes.size() * 2);    	else    		hn = new HashSet();    	int i;    	int floatNum = 0;    	for(i=0; i<trees.size(); i++) {    		Tree t = (Tree)trees.get(i);    		for(int j=0; j<t.nodes.size(); j++) {    			String n = ((TreeNode)t.nodes.get(j)).getName();    			if(n.length()>0)    				hn.add(n);    		}    	}    	i=0;    	String s[] = new String[hn.size()];    	Iterator it = hn.iterator();    	while (it.hasNext()) {    		s[i] = (String) it.next();    		i++;    	}    	Arrays.sort(s); // one sort instead of making s a treeset which would sort with every add    	searchFrame.initializeList(new ArrayList(Arrays.asList(s)));	}    public int addGroup(boolean thisTreeOnly) {	int groupCount = groups.size();	RangeList g = new RangeList(groupCount);	g.setEnabled(true);	g.setThisTreeOnly(thisTreeOnly);	System.out.println("adding group " + groupCount);	groups.add(g);	groupsByIndex.add(g); // permanent ordering	return groupCount;    }    public void setGroupPriority(int group) {//    System.out.println("priority change, group " + group + " " + foundGroup);	Object g = groupsByIndex.get(group);	if (group <= markGroup.length) {	    groups.remove(g);	    groups.add(1,g); // put it first of changeable ones	    // update keys/alpha for marked colors	    Iterator iter = groups.listIterator(1);	    int currKey = 0;	    while (currKey < markGroup.length)	    {	    	RangeList currGroup = (RangeList)iter.next();//			System.out.println("setting group " + currGroup.getColor().getAlpha() + " " + currGroup.hashCode() + " to key " + currKey);	    	currGroup.setKey(currKey++);	    }	}    }		public void clearDrawers()	{		Iterator atdIter = treeDrawers.iterator();		if( treeDrawers.size() > 1)		while( atdIter.hasNext())		{			AccordionTreeDrawerFinal a = (AccordionTreeDrawerFinal) atdIter.next();						if( a.baseBox != null && a == a.getBaseBox().getDrawer())			{			if( a.getFlashBox() != null )				a.getFlashBox().undraw();			a.baseBox = null;			a.setFlashBox(null);			a.requestRedraw(); // too much drawing			a.actionmodeReset();			}				}	}    // deliberately don't have removeGroup method. if you don't want    // it anymore, disable it. why? we want the index in the groups    // vector to match the key in the rangelist. maybe there's a less    // hardline way to do this?...    // what sort of error checking should we do here if group is out    // of bounds? be silent, return null where appropriate? print out    // error message? throw an informative exception? ...    public void setGroupColor(int group, Color c) {	((RangeList)groupsByIndex.get(group)).setColor(c);    }	    public void setGroupEnable(int group, boolean on) {	((RangeList)groupsByIndex.get(group)).setEnabled(on);    }    private void ascendTreeMark(AccordionTreeDrawer atd, AccordionTreeDrawer currTree,             TreeNode directlyMarked, TreeNode n, RangeList addToGroup)    {        // ascend currTree (from n, the bcn of directlymarked, to the root) until no more marking needs to be done        TreeNode currIndirectNode = n.parent;//        System.out.print(0);        if (currIndirectNode == null) return;//        System.out.print(1);        TreeNode currDirectNode = TPs.getBestCorrNode(currTree.tree, currIndirectNode, atd.tree, edgeweightLevelUsed);        if (currDirectNode == null) {return;}//        System.out.print(2);//      System.out.println("addedAlready: " + currChild.key + " " + currTree.getKey());      boolean addedAlready = addToGroup.isThisRangeInList(currIndirectNode.key, currIndirectNode.key, currTree);//      System.out.println("fitsIntoDirect: " + currDirectNode.key + " " + atd.getKey());      boolean fitsIntoDirect = addToGroup.isThisRangeInList(currDirectNode.key, currDirectNode.key, atd);//      System.out.println("added: " + addedAlready + "   fits: " + fitsIntoDirect);      while (!addedAlready && fitsIntoDirect)//        while (!addToGroup.isThisRangeInList(currIndirectNode.key, currIndirectNode.key, currTree) &&//                currDirectNode == directlyMarked)        {//          System.out.print('.');            //System.out.println("ascend mark for " + currIndirectNode);            addToGroup.addRange(currIndirectNode.key, currIndirectNode.key, currTree);            currIndirectNode = n.parent;            if (currIndirectNode == null)                break;            currDirectNode = TPs.getBestCorrNode(atd.tree, currIndirectNode, currTree.tree, edgeweightLevelUsed);            if (currDirectNode == null)                break;                        addedAlready = addToGroup.isThisRangeInList(currIndirectNode.key, currIndirectNode.key, currTree);            fitsIntoDirect = addToGroup.isThisRangeInList(currDirectNode.key, currDirectNode.key, atd);        }//      System.out.println(3);    }        private void descendTreeMark(AccordionTreeDrawer atd, AccordionTreeDrawer currTree,            TreeNode directlyMarked, TreeNode n, RangeList addToGroup)    {        // descend currTree (from n to leaves recursively), until no more marking is needed        for (int i = 0; i < n.numberChildren(); i++)        {            TreeNode currChild = n.getChild(i);//            System.out.println("child " + i + " checking for descent: " + currChild);            TreeNode currDirectNode = TPs.getBestCorrNode(currTree.tree, currChild, atd.tree, edgeweightLevelUsed);            if (currDirectNode == null) {continue;}//            System.out.println("addedAlready: " + currChild.key + " " + currTree.getKey());            boolean addedAlready = addToGroup.isThisRangeInList(currChild.key, currChild.key, currTree);//            System.out.println("fitsIntoDirect: " + currDirectNode.key + " " + atd.getKey());            boolean fitsIntoDirect = addToGroup.isThisRangeInList(currDirectNode.key, currDirectNode.key, atd);//            System.out.println("added: " + addedAlready + "   fits: " + fitsIntoDirect);            if (!addedAlready && fitsIntoDirect)            {//                System.out.println("adding on descent: " + currChild);                addToGroup.addRange(currChild.key, currChild.key, currTree);                descendTreeMark(atd, currTree, directlyMarked, currChild, addToGroup);            }        }//        System.out.println("d" + n.numberChildren() + " " + n.key + " RangeList: " + addToGroup);    }        // add nodes indirectly marked in all trees    public void addNodesToGroup(int min, int max, int group, AccordionTreeDrawer atd) {    	RangeList addToGroup = (RangeList)groupsByIndex.get(group);     			addToGroup.addRange(min, max, atd);	//System.out.println("range now has " + ((RangeList)groupsByIndex.get(group)).ranges.size() + " elements");	//System.out.println("added min " + min + " max " + max + " group " + group + " tree " + atd.getKey());		// must add the nodes from all other trees as well		Iterator iter = treeDrawers.iterator();//		System.out.println("RangeList: " + addToGroup);		while (iter.hasNext())		{			AccordionTreeDrawer currTree = (AccordionTreeDrawer)iter.next();			if (currTree != atd) // ignore the directly marked tree			{				for (int i = min; i <= max; i++) // over all directly marked nodes				{//				    System.out.println(i + "RangeList: " + addToGroup);				    TreeNode directlyMarked = atd.getNodeByKey(i);					TreeNode n = TPs.getBestCorrNode(atd.tree, directlyMarked, currTree.tree, edgeweightLevelUsed);					if (n != null)					{						// the key represents the current subtree selected; all children of the bcn of this subtree are added to the range						// the subtree selected also needs to be walked to make sure all potential forest created with bcn's is handled					    if (!addToGroup.isThisRangeInList(n.key, n.key, currTree))					    {//					        System.out.println("adding, checking on ascend/descend: " + n);					        addToGroup.addRange(n.key, n.key, currTree);							// after getting the corresponding node, search up the tree until nothing is needed to be marked							ascendTreeMark(atd, currTree, directlyMarked, n, addToGroup);							// also descend the tree until all nodes are marked that need to be							descendTreeMark(atd, currTree, directlyMarked, n, addToGroup);					        if(!stateFrame.LCAMark.isSelected())					            addToGroup.addRange(n.key, n.key, currTree);					        else					            addToGroup.addRange(n.key, n.getMax(), currTree);					    }					}				}			}		}    }    public void removeNodesFromGroup(int min, int max, int group, AccordionTreeDrawer atd) { 	((RangeList)groupsByIndex.get(group)).removeRange(min, max, atd);    }    public Color getGroupColor(int group) { 	return ((RangeList)groupsByIndex.get(group)).getColor();    }    public void clearGroup(int group) {    	RangeList groupList = (RangeList)groupsByIndex.get(group);     		    groupList.clear();//	    groupList.setColorTree(null);	    }    public void unmarkGroup(int group) {    // lcaNode.removeAll(lcaNode);	RangeList groupList = (RangeList)groupsByIndex.get(group); 	RangeInTree rit;		if(groupList.getNumRanges() != 0)		{			rit = groupList.getFirst();			for (int i=0; i<lcaNode.size(); i++)			{				if(((TreeNode)lcaNode.get(i)).getKey() == rit.getMin() )				{//					System.out.println("lca node key: " + rit.getMin());				   lcaNode.remove(i);							}			    }		    }    if(stateFrame.LCAMark.isSelected())      this.doLCAGeom(lcaGroup, (AccordionTreeDrawer)treeDrawers.get(0));	changedMarks();	clearGroup(group);    }    RangeList getGroup(int group) { 	return ((RangeList)groupsByIndex.get(group));    }	void seedGroups(AccordionTreeDrawerFinal atd)	{		Iterator GroupIter = groups.iterator();		while (GroupIter.hasNext()) {			RangeList group = (RangeList)((RangeList)GroupIter.next()).onlyThisAD(atd);			if (true == group.getEnabled()) {			Iterator RangeIter = group.getRanges().iterator();			int count=0;			while (RangeIter.hasNext())			{ // seed all ranges for now, add count restriction back later if necessary && count < 5) {				RangeInTree r = (RangeInTree) RangeIter.next();				int min = r.getMin(), max = r.getMax();				TreeNode rootNode;				do				{					rootNode = atd.getNodeByKey(min);					atd.addToDrawQueue(rootNode);					min = rootNode.rightmostLeaf.key+1;				}				while (min <= max);				count++;			}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲高清中文字幕| 韩日av一区二区| 中文字幕中文字幕中文字幕亚洲无线 | 美国精品在线观看| 亚洲一二三级电影| 一区二区三国产精华液| 中文字幕在线观看一区| 中文字幕一区免费在线观看| 国产精品国产三级国产aⅴ入口 | 日韩电影免费在线观看网站| 香蕉久久一区二区不卡无毒影院 | 欧美国产1区2区| 国产女人18毛片水真多成人如厕| 精品少妇一区二区三区在线播放| 7777精品久久久大香线蕉| 欧美精品乱码久久久久久 | 一区二区三区四区乱视频| 亚洲欧美一区二区三区极速播放| ...av二区三区久久精品| 国产精品久久久久久久岛一牛影视| 久久精品一区二区三区av| 国产亚洲福利社区一区| 欧美激情综合五月色丁香| 国产女人18水真多18精品一级做 | 免费在线观看一区| 麻豆精品在线播放| 国产精品一卡二卡在线观看| 成人一道本在线| 91在线观看下载| 欧美在线看片a免费观看| 欧美色图免费看| 欧美一二三区在线| 国产午夜久久久久| 中文字幕在线一区二区三区| 亚洲激情在线播放| 日韩专区在线视频| 国产一区视频在线看| 不卡欧美aaaaa| 欧美在线免费观看视频| 精品国产网站在线观看| 国产农村妇女精品| 亚洲一区二区精品3399| 麻豆成人免费电影| 成人美女视频在线观看18| 在线一区二区三区四区五区| 精品人伦一区二区色婷婷| 国产精品久久久久影视| 亚洲一区二区三区四区的| 美日韩一级片在线观看| aaa欧美日韩| 91精品国产综合久久国产大片| 久久男人中文字幕资源站| 亚洲视频小说图片| 麻豆国产91在线播放| 91在线云播放| 精品国产三级电影在线观看| 亚洲精品视频免费观看| 老鸭窝一区二区久久精品| 91美女精品福利| 欧美一级久久久久久久大片| 国产精品乱码人人做人人爱| 午夜私人影院久久久久| 丰满少妇在线播放bd日韩电影| 欧美性视频一区二区三区| 久久女同性恋中文字幕| 午夜av电影一区| 成人h版在线观看| 日韩一级免费观看| 亚洲精品v日韩精品| 国产成人亚洲精品狼色在线| 欧美久久久久久久久中文字幕| 欧美高清一级片在线观看| 日韩1区2区3区| 一本色道久久综合亚洲91| 日韩女优av电影在线观看| 亚洲综合免费观看高清在线观看| 国产伦精品一区二区三区在线观看| 欧美性感一区二区三区| 国产精品网曝门| 久久精品二区亚洲w码| 欧美又粗又大又爽| 中文字幕一区日韩精品欧美| 国产一区在线观看麻豆| 91精品一区二区三区在线观看| 亚洲精品免费视频| av综合在线播放| 久久精品欧美日韩精品| 免费视频最近日韩| 538在线一区二区精品国产| 亚洲色图欧美偷拍| 成人性视频网站| 久久综合一区二区| 老司机免费视频一区二区三区| 91精品在线麻豆| 日本美女视频一区二区| 欧美日高清视频| 亚洲图片欧美综合| 欧美在线免费观看视频| 亚洲午夜在线电影| 欧美亚洲综合在线| 亚洲国产日产av| 欧美日韩一区在线观看| 一区二区高清视频在线观看| 91视视频在线观看入口直接观看www | 久久精品999| 日韩一卡二卡三卡国产欧美| 视频精品一区二区| 3d动漫精品啪啪| 日本三级亚洲精品| 91精品国产综合久久精品| 日韩成人av影视| 91精品久久久久久久91蜜桃| 日韩精品久久久久久| 欧美丰满少妇xxxbbb| 日韩av不卡一区二区| 日韩视频免费观看高清在线视频| 免费xxxx性欧美18vr| 精品国产乱码久久久久久蜜臀| 精品一区二区三区免费视频| 久久久亚洲国产美女国产盗摄 | 欧美久久久久久久久| 美女一区二区视频| 久久久久99精品国产片| 春色校园综合激情亚洲| 亚洲视频图片小说| 欧美亚洲国产怡红院影院| 免费人成精品欧美精品| 精品国产一区二区三区不卡| 成人午夜视频免费看| 亚洲免费在线视频一区 二区| 欧美无砖专区一中文字| 秋霞午夜鲁丝一区二区老狼| 久久中文字幕电影| 99re热视频精品| 亚洲电影视频在线| 精品国产凹凸成av人网站| 国产jizzjizz一区二区| 亚洲欧美一区二区久久| 欧美精品成人一区二区三区四区| 麻豆成人久久精品二区三区小说| 中文字幕免费不卡在线| 欧美午夜精品免费| 精品一区二区三区在线播放视频| 国产精品久久久久久久久果冻传媒 | 午夜精品久久久久久久99水蜜桃| 精品少妇一区二区三区在线播放 | 亚洲成人精品一区| 精品国产污污免费网站入口 | 国产女同互慰高潮91漫画| 日本韩国欧美一区二区三区| 蜜桃在线一区二区三区| 欧美国产激情二区三区 | 亚洲一区二区三区四区五区黄| 日韩天堂在线观看| a亚洲天堂av| 看片网站欧美日韩| 国产精品乱码一区二区三区软件| 6080国产精品一区二区| 成人午夜碰碰视频| 毛片av一区二区| 一区二区三区.www| 欧美高清一级片在线观看| 欧美一区二区三区免费视频| 不卡一卡二卡三乱码免费网站| 日韩中文字幕麻豆| 1024成人网| 久久久久久**毛片大全| 777a∨成人精品桃花网| 97se亚洲国产综合自在线观| 美女视频一区二区三区| 一区二区三区欧美日韩| 国产亚洲一区字幕| 欧美一区二区三区婷婷月色| 91在线精品一区二区三区| 国产美女精品人人做人人爽| 三级在线观看一区二区| 亚洲精品视频免费看| 国产三级欧美三级日产三级99 | 欧美精品一区二区三区久久久| 色视频成人在线观看免| 国产成人亚洲综合a∨猫咪| 蜜桃视频在线一区| 午夜久久久久久久久久一区二区| 国产精品久久毛片a| 精品处破学生在线二十三| 欧美日韩国产影片| 欧洲国内综合视频| 99re在线视频这里只有精品| 国产超碰在线一区| 狠狠色丁香久久婷婷综| 青青草成人在线观看| 亚洲国产裸拍裸体视频在线观看乱了 | 成人黄色在线网站| 国精产品一区一区三区mba视频 | 亚洲一区二区3| 亚洲欧洲av一区二区三区久久| 国产无遮挡一区二区三区毛片日本| 欧美大肚乱孕交hd孕妇| 7777精品伊人久久久大香线蕉超级流畅 | 久久久久久毛片|