18 #include <basic/Tracer.hh>
24 #include <utility/io/izstream.hh>
26 #include <utility/vector1.hh>
39 static basic::Tracer
TR(
"core.io.raw_data.DisulfideFile");
55 disulfides.resize(disulfides.size()+disulfides_.size());
62 for(vector1< pair<ResNum,ResNum> >::const_iterator disulf = disulfides_.begin(),
63 end_disulf = disulfides_.end();
64 disulf != end_disulf; ++disulf)
66 Size l = disulf->first.n;
67 Size u = disulf->second.n;
68 disulfides.push_back(std::make_pair(l,u) );
85 disulfides.resize(disulfides.size()+disulfides_.size());
92 for(vector1< pair<ResNum,ResNum> >::const_iterator disulf = disulfides_.begin(),
93 end_disulf = disulfides_.end();
94 disulf != end_disulf; ++disulf)
96 Size l = resnum_to_rosetta_num(pose, disulf->first);
97 Size u = resnum_to_rosetta_num(pose, disulf->second);
98 disulfides.push_back(std::make_pair(l,u) );
127 for(
vector1< pair<ResNum,ResNum> >::const_iterator disulf = disulfides_.begin(),
128 end_disulf = disulfides_.end();
129 disulf != end_disulf; ++disulf)
131 Size l = resnum_to_rosetta_num(pose, disulf->first);
132 Size u = resnum_to_rosetta_num(pose, disulf->second);
133 disulfides.push_back(std::make_pair(l,u) );
146 using namespace core::pose;
149 if( resnum.
type == rosetta_num ||
150 (resnum.
type == unknown_num && resnum.
chain == 0) )
158 TR.Error <<
"[ERROR] PDB Number expected from format, but no PDB Info present."
162 Size n( info->pdb2pose(resnum.
chain, resnum.
n) );
164 TR.Error <<
"[ERROR] PDB Number " << resnum.
n << resnum.
chain
165 <<
" does not correspond to a valid residue." << std::endl;
177 utility::io::izstream disulf_stm;
178 disulf_stm.open( filename_ );
179 if( disulf_stm.fail() ) {
180 TR.Error <<
"[ERROR] Unable to open disulfide file " << filename_ <<
"."<< std::endl;
187 disulf_stm >> skipws;
188 while(disulf_stm.good() ) {
190 int next_char = disulf_stm.peek();
193 if(disulf_stm.fail() || disulf_stm.bad() ) {
194 TR.Error <<
"[ERROR] Error reading disulfide file " << filename_ <<
"." << std::endl;
197 switch( next_char ) {
201 disulf_stm.getline(line);
207 disulf_stm >> l >> u >>
std::ws;
208 if(disulf_stm.fail() || disulf_stm.bad() ) {
209 TR.Error <<
"[ERROR] Error reading disulfide file " << filename_ <<
"." << std::endl;
219 TR.Info <<
"Fixing a disulfide between "
220 << l <<
" and " << u << std::endl;
221 ResNum lres = { l,0,rosetta_num };
222 ResNum ures = { u,0,rosetta_num };
223 disulfides_.push_back(make_pair(lres,ures));