Passo a passo¶
Guia de execução. Cada fluxo é uma sequência de comandos, na ordem em que devem
ser digitados na linha de comando do PyMOL. As linhas iniciadas por # são
comentário e o PyMOL as ignora, então copiar a linha do comentário junto com a
do comando é inofensivo.
Copie uma linha por vez. A barra de comando da interface Qt é de linha única, e
uma colagem de várias linhas vira um comando só. Para rodar um bloco inteiro,
salve num arquivo .pml e chame com @arquivo.pml.
Comentário no fim de uma linha de comando não funciona. `set sphere_scale, 0.55
notafaz o PyMOL tentar converter0.55 # nota` em número e falhar. Por isso¶
a explicação vem sempre na linha de cima.
Substitua /caminho/pymol-vitral/ pelo local real do repositório.
Para a referência completa, ver presets.md. Para os problemas conhecidos, ver
limitacoes.md.
Fluxo 1. Membrana, escolhendo o preset¶
Carregue a estrutura antes do script. A ordem importa: o script divide o que já estiver na sessão.
Ele aplica o preset_memb1 e imprime as contagens. Procure a linha que começa
com [membrane]. Se obj_lipid vier com zero átomos, a lista de resíduos não
cobre o seu sistema: pule para o Fluxo 6.
Os seis presets, um por vez. Cada um responde a uma pergunta diferente:
# Leitura geral. Esferas com folga, uma cor por camada química: cabeça,
# fosfato, glicerol, cauda. A folga é o que preserva a distinção que o
# spacefill cheio apaga. Água em superfície translúcida.
preset_memb1
# Volume ocupado e empacotamento. Raio de van der Waals real, uma cor por
# folheto. A organização interna some por construção: o que se vê é a barreira.
preset_memb2
# Interação íon com cabeça polar. Licorice deixa ver a conformação das caudas,
# e os íons ganham núcleo opaco com casca de solvatação. Água em esferas.
preset_memb3
# Peptídeo inserido. Superfície translúcida por fora, licorice fino por dentro,
# então o contorno da membrana fica sem esconder o que está dentro dela.
# A água fica desligada de propósito: a superfície do solvente cobriria o alvo.
preset_memb4
# Ilustração e sistema grande. As caudas viram uma isosuperfície gaussiana
# única, no lugar de milhares de átomos. É o mais leve e o mais próximo da
# estética de ilustração científica.
preset_memb5
# Navegação, não figura. Linhas, pontos, oclusão ambiente desligada. Existe
# para girar e enquadrar a cena antes de aplicar um preset caro.
preset_memb6
# Corte transversal. Uma fatia central do sistema em spacefill, com cabeça,
# fosfato, glicerol e cauda expostos na face cortada. O corte é uma seleção
# por coordenada, então girar a cena depois não muda o que está exposto.
preset_memb7
# O mesmo corte, no eixo x em vez do y. Aceita 0 para x, 1 para y, 2 para z.
preset_memb7 eixo=0
# Lipídeos anelares. Os que tocam a proteína ficam em licorice colorido e o
# resto da membrana vira fantasma. Precisa de proteína na sessão.
preset_memb8
# O mesmo, com outro raio de contato em angstrom.
preset_memb8 raio=7.0
# Assimetria e espessura. Um folheto por superfície translúcida, em cores
# distintas, com os fosfatos em esfera marcando os dois planos.
preset_memb9
# Para reduzir a uma coluna e imprimir em preto e branco. Duas cores só,
# separadas por claridade e não por matiz, sem água nem íons competindo.
preset_memb10
Todo preset aceita paper, a largura de coluna em milímetros. Sem ele a
iluminação fica como está, para explorar na tela. Com ele a cena já sai no modo
de periódico:
# explorar na tela, e decidir depois
preset_memb5
# já sair pronto para coluna simples
preset_memb5 paper=85
# largura dupla
preset_memb5 paper=170
Trocar o esquema de cor, sem trocar de preset:
# cabeça, fosfato, glicerol, cauda
memb_color moiety
# folheto superior contra folheto inferior
memb_color leaflet
# uma cor por espécie lipídica, para membrana mista
memb_color type
# gradiente contínuo na normal, para ver interdigitação
memb_color depth
Trocar o tratamento da água:
# previsível: infla o raio dos oxigênios e desenha a superfície molecular
memb_water surface
# esferas individuais
memb_water spheres
# campo gaussiano contínuo, exige calibrar o nível
memb_water field
memb_water off
Enquadrar, conferir o material e alternar componentes:
orient obj_lipid
zoom obj_lipid, 3
# o viewport não mostra especular nem antialiasing
ray 1600, 1200
disable obj_wat
enable obj_wat
Fluxo 2. Proteína, escolhendo o preset¶
O preset inicial sai do tamanho: abaixo de 60 resíduos abre em all-atom por
carga, acima abre em cartoon. Na linha [prot] do log estão os objetos criados
e o número de resíduos. Se aparecer estrutura secundaria atribuida com dss, o
arquivo não trazia registros HELIX e SHEET e o script os calculou.
Os oito presets:
# Topologia de domínio. Hélice azul, folha vermelha, alça branca. É o único que
# comunica topologia global. Cartoon não recebe oclusão ambiente no PyMOL, então
# esta é a cena com menos relevo do conjunto.
preset_prot1
# Sítio de ligação. Mesmo cartoon, com superfície translúcida por fora: o
# ligante continua visível por dentro, o que uma superfície opaca impediria.
preset_prot2
# Face de interação e anfipaticidade. Superfície sólida com gradiente
# Kyte-Doolittle. Recebe oclusão ambiente, então é a cena com mais relevo.
# Escreve na coluna B; prot_restore_b desfaz.
preset_prot3
# Arquitetura de complexo. Spacefill, uma cor por cadeia.
preset_prot4
# Flexibilidade. Putty: a espessura codifica o fator B, região flexível fica
# grossa e vermelha. Vale para estrutura experimental. Em modelo predito a
# coluna B costuma trazer pLDDT, cuja escala significa o oposto.
preset_prot5
# Peptídeos. All-atom licorice colorido por carga, que expõe a anfipaticidade
# direto na cadeia lateral. Acima de 60 resíduos vira massa ilegível, e o
# comando avisa no log quando é o caso.
preset_prot6
# Caixa de dinâmica molecular. Cartoon mais a água a 4 A e os íons a 6 A da
# proteína. Descarta o solvente de bulk, que numa caixa típica passa de 90%
# dos átomos e esconde o soluto.
preset_prot7
# Ilustrar o sistema simulado inteiro: dimensão da caixa, proporção entre
# soluto e solvente. Não serve para analisar a proteína, porque o volume de
# solvente a cobre por construção.
preset_prot8
# Caixa de simulação documentada: soluto em superfície, solvente como campo, e
# as doze arestas da caixa desenhadas. As dimensões vão para o log, prontas
# para a legenda. A caixa sai do extent do que está carregado, e não de um
# CRYST1, que frame de dinâmica molecular costuma não ter.
preset_prot9
# Interface de contato. O corpo vira cartoon translúcido, como no preset_prot1,
# e as cadeias laterais que tocam a outra parte vêm para a frente em licorice
# opaco. Com mais de duas cadeias, mostra o par de maior contato e esconde o
# resto. Serve tanto a proteína-proteína quanto a proteína-ligante.
preset_prot10
# Escolher outro par de cadeias.
preset_prot10 cadeias=A C
# Raio de contato maior, para pegar a segunda camada.
preset_prot10 raio=6.0
Aqui também vale o paper: preset_prot9 paper=170 sai direto no modo de
periódico, em largura dupla.
Esquemas de cor:
# estrutura secundária
prot_color ss
# uma cor por cadeia
prot_color chain
# básicos azul, ácidos vermelho, polares claros, apolares amarelo
prot_color charge
# gradiente Kyte-Doolittle, sobrescreve a coluna B
prot_color hydro
# fator B como está no arquivo
prot_color bfactor
# gradiente do N para o C terminal
prot_color rainbow
# devolve os fatores B originais depois de hydro
prot_restore_b
Solvente e íons:
# só a água dentro do raio, selecionada por byres para não exibir meia molécula
prot_water shell, 4.0
prot_water spheres
prot_water surface
prot_water off
# só os íons dentro do raio
prot_ions shell, 6.0
# núcleo opaco com casca translúcida
prot_ions halo
# malha, marca a posição sem ocultar o que está atrás
prot_ions mesh
prot_ions off
Fluxo 3. Peptídeo, com foco na anfipaticidade¶
Para peptídeos antimicrobianos e outros peptídeos curtos, onde a informação está na cadeia lateral e não na topologia global.
Abaixo de 60 resíduos ele já abre no preset_prot6.
# segregação de carga: azul básicos, vermelho ácidos, amarelo apolares,
# azul claro polares
preset_prot6
# a mesma pergunta pela superfície de hidrofobicidade
preset_prot3
Se as duas faces se separam nos dois esquemas, a anfipaticidade é real. Se aparece em um só, vale investigar antes de afirmar.
Alinhar o eixo da hélice na horizontal e renderizar as duas faces:
orient obj_prot
turn x, 90
mv_render face_a.png, 1200, 900
turn y, 180
mv_render face_b.png, 1200, 900
Fluxo 4. Proteína solvatada, saída de dinâmica molecular¶
Corrija a imagem periódica antes de abrir o PyMOL. Sem isso a proteína pode estar partida entre bordas da caixa, e a camada de solvatação sai vazia ou errada. No terminal, com o GROMACS:
Depois:
load /caminho/frame.pdb
run /caminho/pymol-vitral/vitral.pml
# água a 4 A e íons a 6 A da proteína, o resto do solvente oculto
preset_prot7
# aumentar a camada, se ela vier fina demais
prot_water shell, 6.0
prot_ions shell, 8.0
# para ilustrar a caixa inteira, em vez de analisar a proteína
preset_prot8
Se a camada vier vazia, o log avisa. A causa quase sempre é imagem periódica:
volte ao trjconv.
Fluxo 5. Preparar uma figura para artigo¶
Enquadre com cuidado. É o passo que mais afeta o resultado e o único que nenhum script faz por você. Gire, aproxime e centralize até a figura comunicar o ponto sozinha.
# 85 para coluna simples, 170 para largura dupla. Imprime no log a resolução
# alvo em pixels e a linha de render já pronta.
mv_paper 85
# teste de impressão em preto e branco, obrigatório
mv_grayscale 1
ray 1000, 750
mv_grayscale 0
# dimensões da cena, para a legenda
mv_extent obj_lipid
# resolução final, com os números que mv_paper imprimiu
mv_render figura.png, 1004, 753, 300
Se duas cores colapsarem no mesmo tom na escala de cinza, diferencie por claridade, não apenas por matiz. Antes de submeter, confira o arquivo: fundo branco, sem corte nas bordas, legenda coerente com as dimensões medidas.
Fluxo 6. Sistema com nomenclatura desconhecida¶
Quando obj_lipid vem vazio, ou quando as camadas não recebem cor.
stored.r = {}
iterate all, stored.r[resn] = stored.r.get(resn, 0) + 1
print(sorted(stored.r.items(), key=lambda kv: -kv[1])[:30])
stored.n = {}
iterate not polymer, stored.n.setdefault(resn, set()).add(name)
print("\n".join("%s (%d): %s" % (k, len(v), " ".join(sorted(v))) for k, v in stored.n.items()))
Divida o número de átomos de um lipídeo pelo número de moléculas dele. Perto de 12 é Martini, perto de 50 é all-atom.
Os dicionários LIPID_RESN e CG_NAMES ficam no topo de
pymol_vitral/membrane.py. Adicione os resíduos que apareceram e recarregue:
Fluxo 7. Ajustar iluminação¶
Comece pela oclusão ambiente, que dá o relevo de contato. Rode ray depois de
cada nível: o viewport mostra a oclusão, mas não o brilho especular.
Sombra projetada só aparece no ray, e em cena homogênea, como uma bicamada
pura, tende a virar ruído. A maciez custa tempo: soft usa seis luzes, hard
usa uma.
Para ajustar o conjunto de uma vez:
A ordem importa. mv_realism sobrescreve mv_shadows, que sobrescreve
mv_ao. Aplique do mais geral para o mais específico.
Fluxo 8. Recomeçar do zero¶
Quando a sessão acumulou objetos e seleções de tentativas anteriores.
O objeto original é desabilitado, não deletado: no painel ele aparece esmaecido.
Ou apague tudo e recarregue:
Fluxo 9. Carregar automaticamente em toda sessão¶
Uma linha em ~/.pymolrc registra os comandos em toda sessão. O arquivo fica
no seu home, fora do repositório, e é onde moram os caminhos desta máquina.
Conteúdo:
Salve com Ctrl+O, Enter, Ctrl+X. Com a sessão vazia o script não altera nada, apenas imprime que não há estrutura carregada.
Atalhos para as sequências de examples/ entram no mesmo arquivo, com o
caminho já resolvido: