チケット #33400

pdbListRMSDCalc

登録: 2014-03-06 17:06 最終更新: 2014-05-01 04:00

報告者:
担当者:
チケットの種類:
状況:
オープン [担当者決定済み]
コンポーネント:
優先度:
5 - 中
重要度:
5 - 中
解決法:
なし
ファイル:
なし
投票
点数: 0
No votes
0.0% (0/0)
0.0% (0/0)

詳細

	ファイル名: /src/Tools/pdbUtil/pdbListRMSDCalc/src/pdbListRMSDCalc.c
	関数名: lpdbRMSDCalc

	【問題内容】
	mode=0において読み込まれていないファイル(-r)をコピーしていると思います。

	【ソースコード(一部)】(ref記述箇所)
	(113行目付近)
		pdbFile ref;
		int old=0,now=0;
		if(mode==1) {
			pdbFileRead(fptRef, &ref);
			pdbFileTop(&ref);
		}

	(165行目付近)
	if(mode==0){
		pdbFileOneRecordCopy(&ref,pdbRMSD);
	}

	【補足】
	おそらく(113行目付近)をmode==0にするのだと思います。


-追記-
【問題内容】
	修正して頂きましたが、まだmode=0のときの動作ができないようです
	
【考察】
	mode=0のときreferenceはwhile文内にてnline=0のときのみnewするようになってますが、
 	その前にnline++があるので、newされずAppendするようになっている点が
 	原因かと思います。

【ソースコード(一部)】
ファイル名: /src/Tools/pdbUtil/pdbListRMSDCalc/src/pdbListRMSDCalc.c
関数名: lpdbRMSDCalc
	(143行目付近)
	nline=0;
	(150行目付近: while文内)
	    // New
	    if(0==nline) {
	      pdbFileNew(pdbRMSD);
	    } else {
	      pdbFileAppend(pdbRMSD);
	    }
	    nline++;

	(183行目付近: while文内 - if(入力PDBファイルで原子データがあるときに入るようです))
	       // mode_0 Average Coord 
	       if(mode==0){
	         if(0==nline) {
 	          pdbFileNew(&ref);
	         } else {
	           pdbFileAppend(&ref);
	         }
	         pdbFileOneRecordCopy(&ref,pdbRMSD);
	       }
	
【対策案】
	referenceのnewを最初に持ってくるとよいかと思います。
	(修正前)
		(132行目付近)
		  // fptRef
		  if(mode==1) {
		    pdbFileRead(fptRef, &ref);
		    pdbFileTop(&ref);
		  }

		(183行目付近)
	      // mode_0 Average Coord 
	      if(mode==0){
	        if(0==nline) {
	          pdbFileNew(&ref);
	        } else {
	          pdbFileAppend(&ref);
 	       }
	        pdbFileOneRecordCopy(&ref,pdbRMSD);
	      }

	(修正後)
		(132行目付近)
		  // fptRef
		  if(mode==1) {
		    pdbFileRead(fptRef, &ref);
		    pdbFileTop(&ref);
		  } else {
	           pdbFileNew(&ref);
		  } 

		(183行目付近)
	      // mode_0 Average Coord 
	      if(mode==0){
	        if(0==nline) {
	          // pdbFileNew(&ref);
	        } else {
	          pdbFileAppend(&ref);
 	       }
	        pdbFileOneRecordCopy(&ref,pdbRMSD);
	      }

チケットの履歴 (5 件中 3 件表示)

2014-03-06 17:06 更新者: kinoshita-eos
  • 新しいチケット "pdbListRMSDCalc" が作成されました
2014-03-20 21:28 更新者: tacyas
  • 状況オープン から 完了 に更新されました
  • チケット完了時刻2014-03-20 21:28 に更新されました
  • 解決法なし から 修正済み に更新されました
コメント

modeは合っていますが、領域が確保されていませんでした。

mode=0は、平均座標に対するRMSD mode=1は、reference座標に対するRMSD となります。

-r をOptionalに変更しています。 これは、 -m 0の時には必要ないからです。 -m 1の時には必要です。

-m 1のとき、-rが設定されていないと、修了するように変更しています。

176 // mode_0 Average Coord 177 if(mode==0){ 178 if(0==nline) { 179 pdbFileNew(&ref); 180 } else { 181 pdbFileAppend(&ref); 182 } 183 pdbFileOneRecordCopy(&ref,pdbRMSD); 184 } 1

2014-03-27 10:06 更新者: kinoshita-eos
  • 解決法修正済み から なし に更新されました
  • 詳細が更新されました
  • 状況完了 から オープン に更新されました
  • マイルストーン(未割り当て) から Small Toolsのドキュメント作成 (完了済み) に更新されました
2014-05-01 04:00 更新者: tacyas
  • コンポーネント(未割り当て) から base-v2.0 に更新されました
2014-09-01 09:01 更新者: None

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする