UCSF ChimeraXのコマンド一覧

UCSF ChimeraX(ver.1.8)におけるコマンド操作についての備忘録。
[公式ドキュメント](https://www.cgl.ucsf.edu/chimerax/docs/index.html)を参考に作成しています。
## ChimeraXコマンドの基本的な文法
```
command [target-spec] [keyword option1 value1] [keyword option2 value2] ...
```
- `command`：実行したいアクションの名前。（例：color, surface, open）
- `[target-spec]`：コマンドが影響を与えるデータの部分を指定する。省略可能で、省略すると通常はすべての該当データに適用される。（例：特定の原子、残基、モデル）
- `[keyword option value]`：コマンドの動作を細かく指定するオプション。それぞれのオプションにはキーワードと対応する値が存在する。（例：color、radius、style）

### 文法を抑える際のポイント
- 大文字小文字の区別：コマンド名は大文字小文字を区別しないが、キーワードや一部の値（ファイルパスなど）は区別する
- 省略：多くのコマンドやキーワードは、最短のユニークな文字列まで省略が可能（例：colorはcol、surfaceはsurf）
- スペース：対象の指定には埋め込まれたスペースが許可されるが、キーワードや数値の間にはスペースを入れない。値にスペースが含まれる場合（例：フォルダ名にスペースがあるファイルパス）は、引用符で囲む。
- 複数のコマンド：複数のコマンドをセミコロン（;）で区切って1行にまとめることができる

## command
### データのハンドリング
- `open`：ファイル、URL、またはデータベースからデータを読み込む
- `close`：モデルやセッション全体を閉じる
- `save`：画像、セッション、マップ、座標、シーケンス、その他のデータをファイルに保存する
- `fetch by ID`：オンラインソースからデータを取得するためのグラフィカルインターフェースを開く
- `cd`：作業ディレクトリを変更する
- `pwd`：作業ディレクトリを報告する

### 構造データの表示と操作
- `show/hide`：原子、結合、カートゥーン、モデルなどを表示または非表示にする
- `color/rainbow`：原子、結合、カートゥーン、表面などを着色する
- `style`：原子、結合、擬似結合の表示スタイルを設定する（スティック、ボール、球）
- `size`：原子の半径とスティックの太さを設定する
- `cartoon/ribbon/worm`：カートゥーン、リボン、ワームを作成および制御する
- `nucleotides`：核酸の特別な表現を表示する
- `surface`：分子表面を作成および制御する
- `distance`：原子間の距離を監視する
- `angle`：結合角度を設定または報告する
- `torsion`：トーション角を設定または報告する（結合を回転させる）
- `align`：最小二乗フィッティングによって原子のセットを重ね合わせる
- `matchmaker/mmaker`：シーケンスアラインメントに基づいてタンパク質や核酸を重ね合わせる
- `move`：モデルや原子を移動させる
- `turn`：モデルや原子を回転させる
- `roll`：モデルや原子を連続的に回転させる
- `rock`：モデルや原子を前後に揺らす
- `wobble`：フィギュアエイトの回転を行う
- `zoom`：ビューの見かけのサイズを変更する
- `cofr`：回転の中心を設定または報告する
- `combine`：原子モデルを結合またはコピーする
- `split`：原子モデルをサブモデルに分割する
- `rename`：モデル名および/またはID番号を変更する
- `renumber`：残基を再番号付けする
- `changechains`：チェーンIDを変更する
- `addh`：構造に水素原子を追加する
- `addcharge`：原子部分電荷およびAmber/GAFF原子タイプを割り当てる
- `build`：原子構造を構築および変更する
- `delete`：原子、結合、または擬似結合を削除する
- `swapaa`：アミノ酸残基を「変異」させる
- `swapna`：核酸残基を「変異」させる
- `dockprep`：計算のために原子構造を準備する（水素、電荷などを追加）
- `tug`：OpenMMダイナミクスを使用して原子のセットを目標位置に引っ張る
- `altlocs`：構造内の代替位置を管理する

### ボリュームデータの表示と操作
- `volume`：ボリュームデータ（密度マップなど）の表示と処理を制御する
- `vseries`：一連のマップを表示、分析、または処理する
- `measure`：ボリュームデータの測定を行う（中心、ボリュームなど）
- `molmap`：原子座標から密度マップを作成する
- `volume morph`：2つ以上のマップの間でモーフィングする
- `topography`：高さがボリュームデータの値を表す表面を作成する
- `bumps`：アイソサーフェスの突起を識別してマークする
- `segmentation`：既存のセグメンテーションを表面または着色として表示する
- `segger`：Segment Mapで作成されたセグメンテーションに対して動作する
- `segmentations`：Segmentationsツールに関連する機能

### シーケンスデータと分析
- `sequence`：構造チェーンのシーケンスを表示し、シーケンスの関連付けとヘッダーを管理し、シーケンスをアラインメントする
- `blastprotein`：類似したタンパク質シーケンスを検索する
- `alphafold`：AlphaFoldを使用してタンパク質構造を取得または予測する
- `esmfold`：ESMFoldを使用してタンパク質構造を取得または予測する

### 分析と計算
- `hbonds`：水素結合を特定する
- `clashes/contacts`：原子間の衝突または接触を特定する
- `interfaces`：インターフェース領域に基づいてチェーン間のネットワーク図を描画する
- `crystalcontacts`：対称関連コピー間の近接接触を特定する
- `crosslinks`：クロスリンクやその他の擬似結合を分析する
- `dssp`：原子座標を使用してタンパク質の二次構造を定義する
- `rmsd`：フィッティングなしで原子セット間のRMSDを測定する
- `coulombic`：クーロン静電ポテンシャルを計算し、表面を着色する
- `mlp`：タンパク質の分子脂溶性ポテンシャルを計算し、表面を着色する
- `measure`：構造とデータのさまざまな測定を行う（距離、角度、面積など）

### 可視化の強化とユーティリティ
- `lighting`：照明とシャドウのパラメータを制御する
- `material`：光の反射とシャドウのための素材特性を制御する
- `graphics`：背景色、三角測量の細かさ、フレームレートなどを設定する
- `clip`：クリッピング平面を制御する
- `label`：原子、残基、結合、擬似結合などをラベル付けする
- `2dlabels`：プレゼンテーション用の2Dテキスト、シンボル、矢印を追加する
- `scalebar`：スケールバーを描画する
- `key`：カラーキーを描画する
- `marker`：マーカーとリンクを作成、変更、削除する
- `hkcage`：ウイルスカプシドを表す六角形と五角形のケージを作成する
- `shape`：指定された幾何学的形状の表面を作成する
- `smoothlines`：ラインモデルのパスをスムーズにする
- `view`：指定された項目にビューを調整する。ビューを保存/復元する
- `windowsize`：グラフィックスウィンドウのピクセル幅と高さを設定する
- `movie`：映画ファイルを記録およびエンコードする
- `mseries`：モデルの順序付きシリーズを表示する
- `coordset`：トラジェクトリーのフレームを再生する
- `morph`：原子構造間でモーフィングする
- `perframe`：各表示フレームで実行する操作を指定する
- `undo/redo`：限定されたセットのアクションを元に戻したりやり直したりする

### 仮想現実
- `vr/xr`：仮想現実モードを有効にし、関連オプションを制御する
- `device`：各種外部デバイス（VRヘッドセット、SpaceNavigator®、ウェブカメラ）を制御する
- `meeting`：共有VRまたは共同モデリングのためにChimeraXの別のインスタンスに接続する

### スクリプティングとカスタマイズ
- `alias`：コマンドエイリアス（ショートカット）を定義する
- `buttonpanel`：コマンドを実行するカスタムパネルを作成する
- `functionkey`：ファンクションキーにコマンドを割り当てる
- `runscript`：PythonまたはChimeraXコマンドスクリプトをコマンドライン引数で実行する
- `setattr`：属性値を設定する
- `name`：選択や長いターゲット指定に名前を付ける

### システムとその他
- `info`：モデルと属性の情報を報告する
- `version`：ChimeraXのバージョンを報告する
- `registration status`：ChimeraXの登録状況を報告する
- `remotecontrol`：RESTまたはXML-RPCを使用してChimeraXにコマンドを送信する
- `taskman`：バックグラウンドジョブを一覧表示および停止する
- `exit/quit`：ChimeraXを終了する
- 
### Toolshed
- `toolshed`：Toolshed（ウェブリポジトリ）からChimeraXバンドルを管理する

## [target-spec]

### 階層的な指定
原子、残基、チェーン、およびモデルを指定する最も一般的な方法。原子モデルの階層構造をナビゲートするために特別な記号を使用する。

- `#`：モデル番号（例：#1、#2.3、#4.1-end）
- `/`：チェーン識別子（例：/A、/b、/C-F）
- `:`：残基番号または名前（例：:10、:lys、:start-40）
- `@`：原子名（例：@ca、@n、@c[ab]）

例：
- `#1/A:10-20@ca`：モデル1のチェーンAの残基10から20のCA原子
- `:lys,arg`：すべてのチェーンおよびモデルのリジンおよびアルギニン残基
- `#2.1-end`：モデル2のすべてのサブモデル（ただし2.1を除く）

### 組み込みの分類
ChimeraXには、頻繁に使用される原子グループのためのキーワードが存在する。
- 構造別：protein、nucleic、ligand、ions、solvent、backbone、sidechain、helix、strand、coil
- 元素別：C、O、N、Feなど
- 原子タイプ別：Car、N3+、O2など（完全なリストはドキュメント参照）
- 官能基別：amide、aromatic-ring、disulfideなど
- 特別：sel（現在の選択）、pbonds（すべての擬似結合）、hbonds（水素結合）、last-opened、allなど

例：

- `protein & /A`：すべてのモデルのチェーンAのタンパク質残基
- `sel & ~solvent`：選択されたすべての項目（ただし溶媒を除く）
- `hbonds & :<5`：長さが5Å未満の水素結合擬似結合

### ユーザー定義のターゲット
nameコマンドを使用してデータの特定部分を参照するための名前付きターゲットを作成できる

例：

- `name activeSite :12-25,48@n,ca,c,o`
- `color activeSite yellow`

これは`activeSite`という名前のターゲットを定義し、それらの原子を黄色に着色する。

### 属性

属性は原子、残基、チェーン、およびモデルのプロパティ（例：B因子、占有率、電荷）。属性値に基づいて項目を指定できる。

- `@@`：原子属性（例：@@bfactor>40）
- `:::`：残基属性（例：::name="HOH"）
- `//`：チェーン属性（例：//identity="#1/A"）
- `##`：原子モデル属性（例：##name="My Structure"）

例：

- `@ca & @@bfactor>40`：B因子値が40を超えるCA原子
- `::num_atoms>=10`：少なくとも10個の原子を含む残基

### ゾーン

他の原子からの距離に基づいて原子または残基を指定できる。

- `@<`：距離カットオフ内の原子（例：ligand @< 4.5）
- `:>`：距離カットオフを超える原子（例：protein :> 10.0）
- `:<`：距離カットオフ内の残基（例：:lys :< 6.0）
- `:>`：距離カットオフを超える残基（例：:arg :> 8.0）

例：

- `ligand :<5.5`：任意のリガンド原子から5.5Å以内の残基
- `protein :>10 & @ca`：任意のタンパク質原子から10Å以上離れたCA原子

### 組み合わせ

論理演算子を使用してさまざまな指定方法を組み合わせることができる。

- `&`：交差（AND）
- `|`：和（OR）
- `~`：否定（NOT）
- `()`：グループ化のための括弧

例：

- `/A & protein`：チェーンAのタンパク質残基
- `(~helix & ~strand) & :<5`：ヘリックスやストランドにない残基で、参照から5Å以内に任意の原子を持つもの

## keyword, option & value

### 表示とスタイル

- `color/colour`：名前（red、blue）、16進数コード（#FF0000）、またはRGB/RGBA値（0,100,0、0,0,100,50）を使用して色を指定する
  例：`color #1/A green`

- `style`：原子/結合の表示スタイル（例：stick、ball、sphere）および擬似結合の表示スタイル（例：ダッシュの数）を設定する
  例：`style sel stick radius 0.3`

- `size`：原子/結合の半径を制御する（radius、ballScale、stickRadiusなど）
  例：`size ligand atomRadius 1.8`

- `transparency/opacity`：透明度を設定する（0% 完全不透明、100% 完全透明）
  例：`transparency #2.1 50`

- `cartoon/ribbon style`：カートゥーンの幅（width）、厚さ（thickness）、断面形状（xsection）などのパラメータを指定する
  例：`cartoon style protein width 1.5 thickness 0.3`

- `nucleotides style`：特定の核酸の表現を制御する（atoms、fill、ladder、stubs、tube/slab、slab）
  例：`nucleotides #1/B ladder radius 0.5`

### 位置と変換

- `position/center`：オブジェクトの位置や変換の中心を定義する（x、y、z座標や原子/モデルの指定を使用）
  例：`move x 10 center #2`

- `axis`：方向ベクトルを指定する（x、y、z、または座標値 1,0,0）
  例：`turn z 90`

- `rotation`：軸と角度を使用してオブジェクトを回転させる（ax,ay,az,angle）
  例：`shape cylinder rotation 1,0,0,45`

- `qrotation`：クォータニオンを使用してオブジェクトを回転させる（qx,qy,qz,qw）
  例：`view matrix camera 0,0,0.707,0.707`

- `coordinateSystem`：座標を解釈するための座標系を指定する
  例：`define axis /A coordinateSystem #2`

### 選択と制限

- `select/restrict`：コマンドの適用範囲を特定の原子、残基、またはモデルに限定する。詳細は「ターゲット指定」のドキュメントを参照
  例：`contacts protein restrict ligand`

- `interModel/intraModel/interMol/intraRes`：モデル間または分子内、残基間の相互作用を考慮するかどうかを制御する
  例：`clashes :<5 interModel false`

### 計算と測定

- `resolution`：マップ生成やスムージングの解像度を指定する
  例：`molmap #1 5.0 resolution`

- `level/threshold`：アイソサーフェスの等高線レベルやボリュームレンダリングの強度しきい値を設定する
  例：`volume #2 level 1.5`

- `probeRadius`：分子表面計算のプローブ半径を設定する
  例：`surface ligand probeRadius 1.7`

- `gridSpacing`：ボリュームデータや表面計算のグリッドポイント間の間隔を制御する
  例：`volume #3 gridSpacing 0.5`

- `distance/angle/torsion`：測定または設定する距離、角度、二面角を指定する
  例：`distance @ca /A:10 to /A:20`

### ファイルとデータ処理

- `format`：データの開閉時のファイル形式を指定する
  例：`open myfile.mrc format ccp4`

- `name`：モデルやデータセットに名前を割り当てる
  例：`open 1abc name "My Protein"`

- `id`：モデルID番号を指定する
  例：`surface #1 id #2.1`

- `directory/filename`：入力または出力のファイルパスを指定する
  例：`save ~/Desktop/image.png`

### スクリプトとコントロール

- `frames`：マルチフレームアクションが実行されるフレーム数を指定する
  例：`turn y 90 frames 30`

- `wait`：指定されたフレーム数だけコマンドの実行を一時停止する
  例：`wait 10`

- `loop`：アクションを指定回数繰り返す
  例：`vseries play #1 loop true`

- `perframe`：各表示フレームでコマンドを実行する
  例：`perframe "turn y 2; wait"`

### 仮想現実

- `vr/xr`：仮想現実モードを有効にし（on/off）、さまざまなVR特有の設定を制御する
  例：`vr on mirror false`

- `device`：外部デバイス（VRヘッドセット、SpaceNavigatorなど）を管理する
  例：`device snav on`