Two-sided partial diffusion with sequence gaps?

Aperta
#453 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
45/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
python

Direzione di ricerca

Start at the run_inference.py entry point and trace how contigmap.contigs and contigmap.provide_seq are parsed for partial diffusion. Reproduce the attached 9sps_binderA_targetBgaps.pdb example with the continuous and breaks configurations. Done means two-sided partial diffusion preserves both the input sequence gap and the original target chain label without post-processing.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Hello RFdiffusion devs! I'm trying to do something pretty specific in RFdiffusion, and I am hoping for some guidance. I want to do two-sided partial diffusion on a binder-target complex, where the target contains a gap in the sequence (missing residues). I've constructed a simple minimal example using a modified version of PDB ID 9SPS (attached) where I set the 'binder' as chain A, 'target' as chain B, and I deleted residues 80-100 from chain B.

$INPUT_PDB="9sps_binderA_targetBgaps.pdb"

9sps_binderA_targetBgaps.pdb

One-sided partial diffusion works fine and preserves the sequence gap. Of course, it helps here that the contig includes the chain label, so we can just specify chain B twice!

run_inference.py \
    "inference.input_pdb=$INPUT_PDB" \
    'inference.num_designs=3' \
    'diffuser.partial_T=15' \
    'contigmap.contigs=["124-124/0 B1-79/0 B101-195/0"]' \
    "inference.schedule_directory_path=$OUTPUT_DIR" \
    "inference.output_prefix=$OUTPUT_DIR/onesided"

onesided_0.pdb

I tried two different versions of the syntax for two-sided partial diffusion:

# version one - pretend the target is continuous
run_inference.py \
    "inference.input_pdb=$INPUT_PDB" \
    'inference.num_designs=3' \
    'diffuser.partial_T=15' \
    'contigmap.contigs=["124-124/0 174-174/0"]' \
    'contigmap.provide_seq=["124-297"]' \
    "inference.schedule_directory_path=$OUTPUT_DIR" \
    "inference.output_prefix=$OUTPUT_DIR/continuous"

# version two - include the sequence gap in the target
run_inference.py \
    "inference.input_pdb=$INPUT_PDB" \
    'inference.num_designs=3' \
    'diffuser.partial_T=15' \
    'contigmap.contigs=["124-124/0 79-79/0 95-95/0"]' \
    'contigmap.provide_seq=["124-297"]' \
    "inference.schedule_directory_path=$OUTPUT_DIR" \
    "inference.output_prefix=$OUTPUT_DIR/breaks"

continuous_0.pdb
breaks_0.pdb

Unsurprisingly, version one ("continuous") stitches together the gap in the target sequence, creating an unhelpful franken-target. Version two ("breaks") is more promising, except that it interprets the discontinuity as a chain break too, and so the target gets split into chain B before the break and chain C after the break.

Breaking up the provide_seq flag into two parts, e.g. 'contigmap.provide_seq=["124-202,203-297"]' \ produced the same output as version 2.

Other than the chain labels, version 2 gives me exactly what I'm looking for, so I could just do some post-processing to combine chains B and C back into chain B and call it a day. But, it would certainly be preferable to have this handled by RFdiffusion itself! Perhaps the syntax could support something like 'contigmap.provide_seq=["124-202/0 203-297"]' \.

To summarize, is there any way to do two-sided partial diffusion, while preserving the gaps in the input sequence and preserving the chain labels of the input sequence? Thank you!

Lingua principale
Python
Stelle
3.1k
Fork
644
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di RosettaCommons/RFdiffusion

Tutte le issue di RosettaCommons/RFdiffusion

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.