{
getCouplings(couplingsFile);
getSeq2State(seq2stateFile);
+ //insertReferenceStates(); // XXX
this->size = aa2state.size();
}
}
}
+// some sites are
+// Returns the number of elements inserted into J.
+int PottsHamiltonian::insertReferenceStates()
+{
+ // find indices of singular states
+ std::vector<size_t> Xidx;
+ //Xidx.push_back(0); // prepend with 0, for starting interval
+ for (size_t i = 0; i < state2aa.size(); ++i) {
+ if (state2aa[i].size() == 1) { // state2aa[i] == {aa_X}
+ Xidx.push_back(i);
+ }
+ }
+ //Xidx.push_back(size); // append with size, for ending interval
+ size_t numX = Xidx.size(); // - 2;
+ size_t sizeOld = size - numX;
+ //assert(J.size() == (sizeOld+1)*(sizeOld)/2);
+
+ // bail out early if no need to insert sites
+ //if (numX == 0)
+ // return 0;
+
+ Coupling newJ;
+
+ Coupling::iterator begin = J.begin();
+ Coupling::iterator end = J.begin();
+
+ //// iterate over
+ //for (size_t i = 0; i < numX; ++i) {
+ // for (size_t j = i+1; j < numX; ++j) {
+
+ // }
+ //}
+
+ // iterate over regions in the destination vector
+ for (size_t sec = 0; sec < size; ++sec) {
+ size_t secLen = size - sec;
+ for (size_t i = 0; i < numX; ++i) {
+ if (Xidx[i] < sec) {
+ // copy from begin to Xidx[i]-sec
+ // copy Xidx[i-1],Xidx[i] + i-1;
+ }
+ else if (Xidx[i] == sec+1) {
+ // insert a whole bunch of nothings
+ }
+ begin = end;
+ }
+ end = J.begin() + (size-sec)*(size-sec-1)/2; // or something
+ // copy from begin to end of section
+ }
+
+ int inserted = 0;
+ //for (size_t idx = 0; idx < Xidx.size(); ++idx) {
+ // i = Xidx[idx];
+ // end += i;
+
+ // end += i;
+ // newJ.insert(newJ.end(),begin,end); // copy range [begin,end)
+ // newJ.push_back(std::vector<double>()); // add dummy entry
+ // begin += i; // next copy starts here
+ // inserted++;
+
+ J.assign(newJ.begin(),newJ.end());
+
+ return inserted;
+}
+