dab89c1682e091dfa3780ce95359ebea9f6b7d52 braney Thu May 18 09:49:17 2017 -0700 add licensing info to optimalLeaf library diff --git src/optimalLeaf/Leaf.hh src/optimalLeaf/Leaf.hh index aa2ac14..11fa177 100644 --- src/optimalLeaf/Leaf.hh +++ src/optimalLeaf/Leaf.hh @@ -1,56 +1,62 @@ +/* This code provided by Ziv Bar-Joseph with the explicit understanding that + * no licensing is required for it to be used in the UCSC Genome Browser + * as long as reference is made to this paper: + * https://www.ncbi.nlm.nih.gov/pubmed/12801867 + */ + // -------------------------------------------------------------------- // Leaf.hh // This is where the optimal ordering for two subtrees // is comnputed. Uses the known optimal ordering for // each of the subtrees to generate the new ordering of the combined tree. // --------------------------------------------------------------------- #ifndef LEAF_HH #define LEAF_HH // used for every possible pair of rightmost and leftmost leaves // to find the best leaves in the intersection for this pair class LeafPair { public: LeafPair(int l,int r,LeafPair *pl,LeafPair *pr,int t1,int t2); int leftLeaf; int rightLeaf; LeafPair *preLeft; LeafPair *preRight; int n1,n2; }; // store the distance for this LeafPair struct LeafDist { LeafDist(int to,float d,LeafPair *p) {n=to; dist = d;best = p;} int n; float dist; LeafPair *best; }; class Leaf { private: int index; LeafDist **curDist,**newDist; float **distMat; int listSize,newSize; LeafPair *bestPair; public: Leaf(int num, float **mat); int giveIndex() {return index;} void setSize(int size) {listSize = size;} int giveSize() {return listSize;} LeafDist **giveList() {return curDist;} void replace(); void initNewSize(int nSize) {newDist = new LeafDist*[nSize];} void initNewDist() {newDist = 0;} void addToNew(Leaf **corner1,Leaf **corner2,int n1,int n2,int c1,int c2,float max1,int tot); void addNewDist(int n,float dist,LeafPair *p); LeafPair *findMin(float *min); float bestNew; int findLast(Leaf **corner1,Leaf **corner2,int n1,int n2,int tot); }; #endif