mcpField
P
pyopenms-mass-spectrometry

pyopenms-mass-spectrometry

github.com/jaechang-hitsデータ・データベース38472 回インストール6 日前に更新
リポジトリ

pyopenms-mass-spectrometry について

PyOpenMS は、プロテオミクスやメタボロミクスの質量分析を Python で行うための OpenMS C++ ライブラリのバインディングです。複数形式のファイル入出力、信号処理、特徴量検出、サンプル間の定量解析に対応します。

主な機能

  1. 01複数の質量分析形式の読み書き
  2. 02スペクトルの平滑化・フィルタリング・ピーク検出
  3. 03クロマトグラフィー特徴量の検出とリンク
  4. 04ペプチド・タンパク質同定結果の処理
  5. 05非標的メタボロミクスワークフローへの対応
  6. 06データの pandas へのエクスポート

活用シーン

  1. 01プロテオミクスまたはメタボロミクスの LC-MS/MS データ処理
  2. 02サンプル間での特徴量のアラインメントとリンク
  3. 03FDR 制御による検索エンジン結果のフィルタリング
  4. 04mzXML と mzML 間のファイル変換

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jaechang-hits/sciagent-skills --skill pyopenms-mass-spectrometry

インストール後、Claude Code で/pyopenms-mass-spectrometryを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
data_structures_reference.md
identification_metabolomics.md
signal_feature_processing.md

詳細

PyOpenMS — 質量分析

概要

PyOpenMS は、計算質量分析向けの OpenMS C++ ライブラリに対する Python バインディングを提供します。プロテオミクスやメタボロミクスのデータ処理に対応しており、10 種類以上の MS 形式のファイル入出力、シグナル処理、特徴検出、ペプチド/タンパク質の同定、サンプル間の定量分析が可能です。

使用する場面

  • プロテオミクスまたはメタボロミクス向けに、生の LC-MS/MS データ(mzML、mzXML)を処理する
  • クロマトグラフィー特徴量を検出し、複数のサンプル間で対応付ける
  • FDR 制御を用いて、MS/MS 検索エンジンの結果からペプチドとタンパク質を同定する
  • ノンターゲット・メタボロミクスのワークフロー(ピークピッキング → 特徴検出 → アラインメント → アノテーション)を実行する
  • 質量分析ファイル形式(mzML、mzXML、featureXML、idXML)間で変換する
  • 生スペクトルデータを平滑化、フィルタリング、重心化する
  • 単純なスペクトルライブラリ照合や代謝物同定には、代わりに matchms を使用する
  • タンパク質配列の解析(質量分析以外)には、代わりに biopython を使用する

前提条件

uv pip install pyopenms numpy pandas matplotlib
  • Python 3.8 以降。ピーク配列の操作には NumPy が必要です
  • 入力データ:mzML ファイル(標準的な MS 形式)、FASTA データベース(同定用)
  • すべてのアルゴリズムで、一貫したパターンを使用します:algo = Algorithm(); params = algo.getParameters(); params.setValue(...); algo.setParameters(params)

事前確認

解析コードを書く前に、以下の点をユーザーと確認してください。

decisions:
  - id: D1
    param: instrumentResolution
    kind: required
    source: data
    ask: "Is this high-resolution data, and are the spectra already centroided or still in profile mode?"
    default: null

  - id: D2
    param: signalToNoiseThreshold
    kind: required
    source: user
    depends_on: [D1]
    ask: "How far above noise must a peak rise to be kept during centroiding?"
    default: 1.0
    skip_if: "spectra already centroided by the acquisition software"

  - id: D3
    param: massTolerance
    kind: required
    source: data
    depends_on: [D1]
    ask: "What mass accuracy should feature detection and linking assume?"
    default: "10 ppm"

  - id: D4
    param: retentionTimeTolerance
    kind: required
    source: data
    ask: "How far apart in retention time may the same feature appear across runs?"
    default: "100 s"

  - id: D5
    param: chargeStateRange
    kind: required
    source: user
    ask: "Which charge states should features be searched for?"
    default: "1 to 3 - widen for intact protein or metabolite work"

  - id: D6
    param: intensityNormalization
    kind: optional
    source: user
    ask: "Should spectra be normalized before comparison, and to total ion current or to the base peak?"
    default: "not normalized"

  - id: D7
    param: smoothingFilter
    kind: optional_conditional
    source: data
    ask: "Does the signal need smoothing before peak picking, and with which filter width?"
    default: "no smoothing"

D1 は以降のほぼすべてを左右します。セントロイド化を行わずに プロファイルデータを処理すると、スキャンポイントごとに 1 つの特徴量が 生成されます。また、低分解能データに高分解能向けの許容誤差を適用すると、 異なる化合物の特徴量が対応付けられます。どちらの場合も、特徴量テーブルは 完全な形で出力されます。

クイックスタート

import pyopenms as ms

# Load mzML file
exp = ms.MSExperiment()
ms.MzMLFile().load("sample.mzML", exp)
print(f"Spectra: {exp.getNrSpectra()}, Chromatograms: {exp.getNrChromatograms()}")

# Examine first spectrum
spec = exp.getSpectrum(0)
mz, intensity = spec.get_peaks()
print(f"MS level: {spec.getMSLevel()}, RT: {spec.getRT():.2f}s, Peaks: {len(mz)}")

# Quick preprocessing: smooth + centroid
gauss = ms.GaussFilter()
p = gauss.getParameters(); p.setValue("gaussian_width", 0.1); gauss.setParameters(p)
gauss.filterExperiment(exp)

picker = ms.PeakPickerHiRes()
centroided = ms.MSExperiment()
picker.pickExperiment(exp, centroided)
print(f"Centroided spectra: {centroided.getNrSpectra()}")

コア API

モジュール 1:ファイル入出力とデータアクセス

複数の形式で質量分析データを読み書きします。

import pyopenms as ms

# Read mzML (standard MS format)
exp = ms.MSExperiment()
ms.MzMLFile().load("data.mzML", exp)

# Indexed access for large files (memory-efficient)
loader = ms.IndexedMzMLFileLoader()
indexed_file = ms.OnDiscMSExperiment()
loader.load("large_data.mzML", indexed_file)
spec = indexed_file.getSpectrum(0)  # Load single spectrum on demand
print(f"Total spectra: {indexed_file.getNrSpectra()}")

# Read identification results (idXML)
protein_ids, peptide_ids = [], []
ms.IdXMLFile().load("results.idXML", protein_ids, peptide_ids)
print(f"Peptide IDs: {len(peptide_ids)}, Protein IDs: {len(protein_ids)}")

# Read feature map
fm = ms.FeatureMap()
ms.FeatureXMLFile().load("features.featureXML", fm)
print(f"Features: {fm.size()}")
# Write mzML with compression
exp_out = ms.MSExperiment()
# ... populate experiment ...
ms.MzMLFile().store("output.mzML", exp_out)

# Read FASTA database
entries = []
ms.FASTAFile().load("database.fasta", entries)
print(f"Proteins in DB: {len(entries)}")
for e in entries[:3]:
    print(f"  {e.identifier}: {e.sequence[:30]}...")

対応形式:mzML、mzXML、mzData(スペクトル);featureXML、consensusXML(特徴量);idXML、mzIdentML、pepXML(同定);TraML(トランジション);mzTab(結果);FASTA(配列)

モジュール 2:シグナル処理とピークピッキング

後続の解析に向けて、生スペクトルデータを前処理します。

import pyopenms as ms

exp = ms.MSExperiment()
ms.MzMLFile().load("raw.mzML", exp)

# Gaussian smoothing
gauss = ms.GaussFilter()
p = gauss.getParameters()
p.setValue("gaussian_width", 0.15)  # m/z width
gauss.setParameters(p)
gauss.filterExperiment(exp)

# Savitzky-Golay smoothing (alternative)
sg = ms.SavitzkyGolayFilter()
p = sg.getParameters()
p.setValue("frame_length", 15)  # Must be odd
sg.setParameters(p)
# sg.filterExperiment(exp)  # Use one smoother, not both

# Peak picking (centroiding) — required before feature detection
picker = ms.PeakPickerHiRes()
p = picker.getParameters()
p.setValue("signal_to_noise", 1.0)
picker.setParameters(p)
centroided = ms.MSExperiment()
picker.pickExperiment(exp, centroided)
print(f"Raw peaks in spec 0: {exp.getSpectrum(0).size()}")
print(f"Centroided peaks: {centroided.getSpectrum(0).size()}")
# Normalization
normalizer = ms.Normalizer()
p = normalizer.getParameters()
p.setValue("method", "to_one")  # "to_one" or "to_TIC"
normalizer.setParameters(p)
normalizer.filterPeakMap(centroided)

# Peak filtering — remove low-intensity noise
mower = ms.ThresholdMower()
p = mower.getParameters()
p.setValue("threshold", 100.0)  # Minimum intensity
mower.setParameters(p)
mower.filterPeakMap(centroided)

# Baseline reduction
morph = ms.MorphologicalFilter()
p = morph.getParameters()
p.setValue("struc_elem_length", 3.0)  # m/z window
morph.setParameters(p)
morph.filterExperiment(exp)
モジュール 3:特徴検出と対応付け

クロマトグラフィー特徴量を検出し、サンプル間で対応付けます。

import pyopenms as ms

# Load centroided data
exp = ms.MSExperiment()
ms.MzMLFile().load("centroided.mzML", exp)

# Feature detection (proteomics — centroided data)
ff = ms.FeatureFinder()
features = ms.FeatureMap()
seeds = ms.FeatureMap()
params = ms.FeatureFinder().getParameters("centroided")
ff.run("centroided", exp, features, params, seeds)
print(f"Detected {features.size()} features")

# Access feature properties
for f in features[:5]:
    print(f"  RT: {f.getRT():.1f}s, m/z: {f.getMZ():.4f}, "
          f"intensity: {f.getIntensity():.0f}, quality: {f.getOverallQuality():.3f}")
# Feature linking across samples — align retention times first
aligner = ms.MapAlignmentAlgorithmPoseClustering()
p = aligner.getParameters()
p.setValue("max_num_peaks_considered", 1000)
aligner.setParameters(p)

# Link features into consensus map
linker = ms.FeatureGroupingAlgorithmQT()
p = linker.getParameters()
p.setValue("distance_RT:max_difference", 60.0)  # seconds
p.setValue("distance_MZ:max_difference", 10.0)   # ppm
linker.setParameters(p)

consensus = ms.ConsensusMap()
linker.group([features_sample1, features_sample2, features_sample3], consensus)
print(f"Consensus features: {consensus.size()}")

# Export to pandas for downstream analysis
import pandas as pd
df = consensus.get_df()
print(f"Consensus table: {df.shape}")
モジュール 4:ペプチドとタンパク質の同定

FDR 制御とタンパク質推定を用いて、検索エンジンの結果を処理します。

import pyopenms as ms

# Load search engine results
protein_ids, peptide_ids = [], []
ms.IdXMLFile().load("search_results.idXML", protein_ids, peptide_ids)

# Examine peptide hits
for pep_id in peptide_ids[:3]:
    print(f"Spectrum: RT={pep_id.getRT():.1f}, MZ={pep_id.getMZ():.4f}")
    for hit in pep_id.getHits():
        seq = hit.getSequence()
        print(f"  {seq} score={hit.getScore():.4f} charge={hit.getCharge()}")

# FDR filtering (target-decoy approach)
fdr = ms.FalseDiscoveryRate()
fdr.apply(peptide_ids)

# Filter at 1% FDR
filtered = []
for pep_id in peptide_ids:
    hits = [h for h in pep_id.getHits() if h.getScore() <= 0.01]
    if hits:
        pep_id.setHits(hits)
        filtered.append(pep_id)
print(f"Peptide IDs at 1% FDR: {len(filtered)}")
# Protein inference
inference = ms.BasicProteinInferenceAlgorithm()
inference.run(peptide_ids, protein_ids)

for prot_id in protein_ids:
    for hit in prot_id.getHits()[:5]:
        print(f"Protein: {hit.getAccession()}, score: {hit.getScore():.4f}")

# Peptide sequence handling
seq = ms.AASequence.fromString("PEPTIDER")
print(f"Molecular weight: {seq.getMonoWeight():.4f}")
print(f"Formula: {seq.getFormula()}")

# Modified sequence
mod_seq = ms.AASequence.fromString("PEPTM(Oxidation)DER")
print(f"Modified weight: {mod_seq.getMonoWeight():.4f}")

# Enzymatic digestion
digestor = ms.ProteaseDigestion()
digestor.setEnzyme("Trypsin")
digest = []
digestor.digest(ms.AASequence.fromString("MKWVTFISLLLLFSSAYSRGVFRR"), digest)
print(f"Tryptic peptides: {len(digest)}")
モジュール 5:メタボロミクスのパイプライン

生データから特徴量テーブルまで、ノンターゲット・メタボロミクスのワークフローを一通り実行します。

import pyopenms as ms

# Step 1: Load and centroid raw data
exp = ms.MSExperiment()
ms.MzMLFile().load("metabolomics_sample.mzML", exp)

picker = ms.PeakPickerHiRes()
centroided = ms.MSExperiment()
picker.pickExperiment(exp, centroided)

# Step 2: Feature detection for metabolomics (small molecules)
ff = ms.FeatureFinder()
features = ms.FeatureMap()
seeds = ms.FeatureMap()
params = ms.FeatureFinder().getParameters("centroided")
params.setValue("isotopic_pattern:charge_low", 1)
params.setValue("isotopic_pattern:charge_high", 3)
ff.run("centroided", centroided, features, params, seeds)
print(f"Detected features: {features.size()}")

# Step 3: Adduct detection (group related adducts)
decharger = ms.MetaboliteAdductDecharger()
p = decharger.getParameters()
p.setValue("potential_adducts", "H:+:0.6;Na:+:0.3;K:+:0.1")  # Positive mode
decharger.setParameters(p)
# decharger.compute(features, feature_map_out, consensus_map_out)
# Step 4: RT alignment across samples
import pyopenms as ms
import pandas as pd

# Assuming feature maps from multiple samples
sample_files = ["sample1.featureXML", "sample2.featureXML", "sample3.featureXML"]
feature_maps = []
for f in sample_files:
    fm = ms.FeatureMap()
    ms.FeatureXMLFile().load(f, fm)
    feature_maps.append(fm)

# Align retention times
aligner = ms.MapAlignmentAlgorithmPoseClustering()
aligner.setReference(0)  # Use first sample as reference

# Step 5: Link features to consensus map
linker = ms.FeatureGroupingAlgorithmQT()
p = linker.getParameters()
p.setValue("distance_RT:max_difference", 30.0)
p.setValue("distance_MZ:max_difference", 10.0)
linker.setParameters(p)

consensus = ms.ConsensusMap()
linker.group(feature_maps, consensus)

# Step 6: Export metabolite table
df = consensus.get_df()
print(f"Feature table: {df.shape[0]} features × {df.shape[1]} columns")
print(df[["RT", "mz", "intensity_0", "intensity_1", "intensity_2"]].head())

主要な概念

アルゴリズムのパラメータ設定パターン

PyOpenMS のアルゴリズムはすべて、同じ 3 ステップのパターンに従います。

algo = ms.AlgorithmClass()           # 1. Instantiate
params = algo.getParameters()         # 2. Get parameters
params.setValue("param_name", value)   # 3. Set values
algo.setParameters(params)            # 4. Apply
# algo.process(input, output)         # 5. Execute

利用可能なパラメータを確認するには:

for key in params.keys():
    print(f"{key}: {params.getValue(key)} (type: {params.getDescription(key)})")
コアデータ構造
オブジェクト説明主なメソッド
MSExperimentスペクトルとクロマトグラムのコレクションgetNrSpectra()、getSpectrum(i)、addSpectrum()
MSSpectrum単一の質量スペクトル(m/z、強度)get_peaks()、getMSLevel()、getRT()、size()
MSChromatogramクロマトグラフィーのトレースget_peaks()、getNativeID()
Feature検出されたクロマトグラフィーピークgetRT()、getMZ()、getIntensity()、getOverallQuality()
FeatureMap特徴量のコレクションsize()、get_df()、反復処理
ConsensusMapサンプル間で対応付けられた特徴量size()、get_df()
PeptideIdentification1 つのスペクトルの検索結果getHits()、getRT()、getMZ()
AASequence修飾を含むアミノ酸配列fromString()、getMonoWeight()、getFormula()
対応ファイル形式
形式リーダークラス内容
mzMLMzMLFile生スペクトル(標準)
mzXMLMzXMLFile生スペクトル(レガシー)
featureXMLFeatureXMLFile検出された特徴量
consensusXMLConsensusXMLFileリンクされた特徴量
idXMLIdXMLFileペプチド/タンパク質の ID
mzIdentMLMzIdentMLFileペプチド/タンパク質の ID(標準)
FASTAFASTAFileタンパク質配列
TraMLTraMLFileMRM トランジション
mzTabMzTabFile定量結果

一般的なワークフロー

ワークフロー 1:プロテオミクスの特徴量検出パイプライン
import pyopenms as ms

# Load → Smooth → Centroid → Detect → Export
exp = ms.MSExperiment()
ms.MzMLFile().load("proteomics.mzML", exp)

# Preprocessing
gauss = ms.GaussFilter()
p = gauss.getParameters(); p.setValue("gaussian_width", 0.1); gauss.setParameters(p)
gauss.filterExperiment(exp)

picker = ms.PeakPickerHiRes()
centroided = ms.MSExperiment()
picker.pickExperiment(exp, centroided)

# Feature detection
ff = ms.FeatureFinder()
features = ms.FeatureMap()
params = ff.getParameters("centroided")
ff.run("centroided", centroided, features, params, ms.FeatureMap())

# Export to pandas
df = features.get_df()
print(f"Features: {df.shape}")
df.to_csv("proteomics_features.csv", index=False)
ワークフロー 2:複数サンプルのメタボロミクス比較
  1. すべてのサンプルの mzML ファイルを読み込みます(コア API モジュール 1)
  2. 各サンプルをセントロイド化します(コア API モジュール 2 — PeakPickerHiRes)
  3. サンプルごとに特徴量を検出します(コア API モジュール 3 — FeatureFinder)
  4. リテンションタイムをアラインメントします(コア API モジュール 3 — MapAlignmentAlgorithmPoseClustering)
  5. 特徴量をコンセンサスマップにリンクします(コア API モジュール 3 — FeatureGroupingAlgorithmQT)
  6. コンセンサステーブルを pandas にエクスポートし、反復間の CV でフィルタリングします
ワークフロー 3:同定結果の分析
import pyopenms as ms
import pandas as pd

# Load and filter identifications
protein_ids, peptide_ids = [], []
ms.IdXMLFile().load("search.idXML", protein_ids, peptide_ids)

# FDR filtering
fdr = ms.FalseDiscoveryRate()
fdr.apply(peptide_ids)

# Build results table
rows = []
for pep_id in peptide_ids:
    for hit in pep_id.getHits():
        if hit.getScore() <= 0.01:  # 1% FDR
            rows.append({
                "sequence": str(hit.getSequence()),
                "score": hit.getScore(),
                "charge": hit.getCharge(),
                "rt": pep_id.getRT(),
                "mz": pep_id.getMZ()
            })

df = pd.DataFrame(rows)
print(f"Identified peptides at 1% FDR: {len(df)}")
print(f"Unique sequences: {df['sequence'].nunique()}")
df.to_csv("peptide_identifications.csv", index=False)

主なパラメーター

パラメーターモジュールデフォルト範囲/オプション効果
gaussian_widthGaussFilter0.20.05–1.0m/z 平滑化ウィンドウの幅
frame_lengthSavitzkyGolayFilter115–31(奇数)平滑化ウィンドウのポイント数
signal_to_noisePeakPickerHiRes1.00.5–10.0セントロイド化に必要な最小 S/N
isotopic_pattern:charge_lowFeatureFinder11–6最小電荷状態
isotopic_pattern:charge_highFeatureFinder31–10最大電荷状態
distance_RT:max_differenceFeatureGroupingAlgorithmQT10010–300 秒特徴量リンクの RT 許容差
distance_MZ:max_differenceFeatureGroupingAlgorithmQT101–50 ppm特徴量リンクの m/z 許容差
thresholdThresholdMower0.00–10000ピーク強度の最小値
methodNormalizer"to_one""to_one"/"to_TIC"正規化方法

ベストプラクティス

  1. 特徴量検出の前に必ずセントロイド化します — FeatureFinder にはセントロイド化済みデータが必要です。最初に PeakPickerHiRes を使用します
  2. 大容量ファイルにはインデックス付き読み込みを使用します — OnDiscMSExperiment はスペクトルをオンデマンドで読み込み、1 GB を超えるファイルでのメモリー問題を回避します
  3. 元のデータを保持します — 処理前に生データの実験を保存します:orig = ms.MSExperiment(exp)。処理によってデータは破壊的に変更されます
  4. プロファイルとセントロイドを意識します — データ型を確認します:spec.getType() は 1(プロファイル)または 2(セントロイド)を返します。一部のアルゴリズムでは特定の型が必要です
  5. パラメーターを確認します — 調整する前にパラメーターを出力します:for k in params.keys(): print(k, params.getValue(k))
  6. 早めに pandas にエクスポートします — features.get_df() または consensus.get_df() を使用して、統計分析に pandas/numpy を活用します

よく使うレシピ

レシピ 1:スペクトルの統計と品質チェック
import pyopenms as ms
import numpy as np

exp = ms.MSExperiment()
ms.MzMLFile().load("sample.mzML", exp)

ms1_count = sum(1 for s in exp if s.getMSLevel() == 1)
ms2_count = sum(1 for s in exp if s.getMSLevel() == 2)
rt_range = (exp.getSpectrum(0).getRT(), exp.getSpectrum(exp.getNrSpectra()-1).getRT())
peak_counts = [s.size() for s in exp]
print(f"MS1: {ms1_count}, MS2: {ms2_count}")
print(f"RT range: {rt_range[0]:.1f}–{rt_range[1]:.1f}s")
print(f"Peaks per spectrum: mean={np.mean(peak_counts):.0f}, "
      f"median={np.median(peak_counts):.0f}")
レシピ 2:理論スペクトルの生成
import pyopenms as ms

# Generate theoretical fragment spectrum for a peptide
tsg = ms.TheoreticalSpectrumGenerator()
p = tsg.getParameters()
p.setValue("add_b_ions", "true")
p.setValue("add_y_ions", "true")
p.setValue("add_metainfo", "true")
tsg.setParameters(p)

spec = ms.MSSpectrum()
seq = ms.AASequence.fromString("PEPTIDER")
tsg.getSpectrum(spec, seq, 1, 2)  # charge 1 to 2
mz, intensity = spec.get_peaks()
print(f"Theoretical fragments for PEPTIDER: {len(mz)} ions")
レシピ 3:形式変換(mzXML → mzML)
import pyopenms as ms

exp = ms.MSExperiment()
ms.MzXMLFile().load("old_data.mzXML", exp)
ms.MzMLFile().store("converted.mzML", exp)
print(f"Converted {exp.getNrSpectra()} spectra to mzML format")

トラブルシューティング

問題原因解決策
読み込み時にFileNotFoundが発生するパスまたは形式が正しくありませんファイルが存在することを確認し、正しいリーダークラス(.mzMLにはMzMLFile)を使用します
検出後のフィーチャーマップが空になるセントロイド化されたデータではなく、プロファイルデータを使用していますFeatureFinderの前にPeakPickerHiResを実行します
検出されるフィーチャーが非常に少ないS/Nしきい値が厳しすぎますsignal_to_noiseを0.5~1.0に下げ、isotopic_patternの電荷範囲を調整します
大容量ファイルでメモリエラーが発生するファイル全体を一度に読み込んでいますインデックスアクセスにはOnDiscMSExperimentを使用します
setValueの型エラーが発生するパラメーターの値の型が正しくありません期待される型を確認します:params.getDescription(key)。数値にはfloat、列挙値にはstringを使用します
RTアラインメントに失敗する共通フィーチャーが少なすぎますmax_num_peaks_consideredを増やし、サンプルが同じ実験のものか確認します
FDR値がすべて1.0になる検索結果にデコイヒットがありませんターゲット・デコイデータベースを使って検索が実行されたことを確認し、スコアの向きを確認します
フィーチャーのリンクが強すぎるRT/m/zの許容範囲が広すぎますdistance_RT:max_differenceとdistance_MZ:max_differenceを小さくします
処理が遅いすべてのスペクトルを処理していますまずMSレベルでフィルタリングします:[s for s in exp if s.getMSLevel() == 1]

同梱リソース

  • references/data_structures_reference.md — PyOpenMSのコアオブジェクト(MSExperiment、MSSpectrum、Feature、FeatureMap、ConsensusMap、PeptideIdentification、AASequence、Param)に関する包括的なドキュメントです。オブジェクトの作成、属性アクセス、反復処理のパターン、メモリ管理、型変換を扱います。

    • 対象:作成・アクセス・反復処理の例を含む、13種類以上のコアデータ構造クラスすべて
    • 本文に移動:Key Conceptsのコアデータ構造の概要表、Core API Module 4のAASequenceの使用方法
    • 省略:PyOpenMS APIドキュメントと重複する網羅的な属性一覧
  • references/signal_feature_processing.md — 元の2つのリファレンスを統合した、シグナル処理アルゴリズムとフィーチャー検出・リンクのワークフローです。

    • 対象:平滑化(Gaussian、Savitzky-Golay)、ピークピッキング(HiRes、CWT)、正規化、ピークフィルタリング(しきい値、ウィンドウ、上位N個)、ベースライン低減、デコンボリューション、スペクトルのマージ、RTアラインメント、質量校正、フィーチャー検出(セントロイド化、メタボロミクス)、フィーチャーリンク、付加体検出、品質管理
    • 本文に移動:Core API Module 2のGaussFilter、PeakPickerHiRes、Normalizer、ThresholdMower、Core API Module 3のFeatureFinder、MapAlignment、FeatureGroupingAlgorithmQT
    • 省略:CWTピークピッカーの詳細パラメーター — HiResに比べて使用頻度が低いため、同位体ウェーブレット変換 — 特殊なユースケースのため
  • references/identification_metabolomics.md — 元の2つのリファレンスを統合した、ペプチド・タンパク質同定とノンターゲットメタボロミクスのパイプラインです。

    • 対象:検索エンジンの統合、FDR計算、タンパク質推定、酵素消化、スペクトルライブラリ検索、理論スペクトル生成、ノンターゲットメタボロミクスのパイプライン(ピークピッキング → フィーチャー検出 → 付加体検出 → アラインメント → リンク → ギャップフィリング → アノテーション → エクスポート)、化合物同定(質量ベース、MS/MSベース)、正規化(TIC)、QC(CVフィルタリング、ブランクフィルタリング)、MetaboAnalystへのエクスポート
    • 本文に移動:Core API Module 4のFDRフィルタリング、タンパク質推定、AASequenceの処理、Core API Module 5のメタボロミクスパイプライン
    • 省略:Comet/Mascotの詳細なパラメーター設定 — 検索エンジン固有のため、MetaboAnalystのエクスポート形式の詳細 — 外部ツールのため

関連スキル

  • matchms-spectral-matching — MS/MSによるスペクトルライブラリのマッチングと代謝物同定
  • biopython-molecular-biology — タンパク質配列解析(FASTA解析、BLAST)

参考資料

コメント