private void writeSelf( String origTarget, GeneBranch currentParent, GeneBranch down, Writer writer1, Writer writer2) throws IOException { if (!down.isSelected()) return; String edgeTag; if (down.isLeaf() || travExp.getUpstream(down.gene).contains(currentParent)) { edgeTag = SIFEnum.CONTROLS_EXPRESSION_OF.getTag(); } else edgeTag = SIFEnum.CONTROLS_STATE_CHANGE_OF.getTag(); writer1.write(currentParent.gene + "\t" + edgeTag + "\t" + down.gene + "\n"); writeWeights(origTarget, currentParent, down, edgeTag, writer2); writeBranches(origTarget, down, writer1, writer2); }