пытаясь выяснить события проникновения в каждую пору белка AQP, встроенного в липидный бислой, через VMD

Мой проект основан на анализе моделирования методом МД системы, содержащей водяную камеру и липидный бислой, содержащий встроенный в него аквапорин. В этой системе выполняется моделирование с временным шагом 150 нс для изучения анализа проникновения воды и потока через липидный бислой. один из анализов моей работы требует расчета событий проникновения воды через каждый канал этого встроенного белка (этот белок содержит четыре мономера, образующих четыре водных канала). Я выполняю свой анализ, используя VMD.

Я получил этот скрипт https://www.ks.uiuc.edu/Training/Tutorials/science/nanotubes/files/permeation.tcl в Интернете. Но этот скрипт не дает результатов в соответствии с моим требованием.

Поскольку я хотел выяснить события проникновения, происходящие через каждую пору / канал воды отдельно, и этот скрипт просто вычисляет события проникновения воды через слой AQP в целом. У меня не так много опыта, чтобы изменить этот сценарий в соответствии с моим требованием.


person iqra khan    schedule 02.07.2020    source источник


Ответы (1)


Первый вопрос, конечно, заключается в том, есть ли в симуляции нужная вам информация. В конце концов, если мы не можем этого обнаружить, то у нас проблемы!

Если мы посмотрим на сам код анализа, то увидим, что все, что он на самом деле делает, это использует координату Z молекул воды в каждом кадре и игнорирует другие координаты (которые потребуются для оценки того, какая пора использовалась). Он решает, что с ними происходит, используя крошечный конечный автомат на молекулу. Соответствующий код таков (после стандартизации ввода):

for {set fr 0} {$fr < $numFrame} {incr fr} {
    molinfo top set frame $fr
    set oldList $labelList
    set labelList {}
    foreach z [$wat get z] oldLab $oldList segname $segList resid $ridList {
        if {$z > $upperEnd} {
            set newLab 2
            if {$oldLab == -1} {
                puts "$segname:$resid permeated through the nanotubes along +z direction at frame $fr"
                if {$fr >= $skipFrame} {
                    incr num1
                }
            }
        } elseif {$z < $lowerEnd} {
            set newLab -2
            if {$oldLab == 1} {
                puts "$segname:$resid permeated through the nanotubes along -z direction at frame $fr"
                if {$fr >= $skipFrame} {
                    incr num2
                }
            }
        } elseif {abs($oldLab) > 1} {
            set newLab [expr $oldLab / 2]
        } else {
            set newLab $oldLab
        }
        lappend labelList $newLab
    }
}

Возможно, для начала нужно собрать координаты X и Y молекул сразу после транзитных событий и нанести их на график? Я не знаю, поможет ли это, но может быть?

for {set fr 0} {$fr < $numFrame} {incr fr} {
    molinfo top set frame $fr
    set oldList $labelList
    set labelList {}
    foreach x [$wat get x] y [$wat get y] z [$wat get z] oldLab $oldList segname $segList resid $ridList {
        if {$z > $upperEnd} {
            set newLab 2
            if {$oldLab == -1} {
                puts "$segname:$resid permeated through the nanotubes along +z direction at frame $fr"
                if {$fr >= $skipFrame} {
                    incr num1
                }
                # Remember event for later
                lappend permeateUpwards $x $y
            }
        } elseif {$z < $lowerEnd} {
            set newLab -2
            if {$oldLab == 1} {
                puts "$segname:$resid permeated through the nanotubes along -z direction at frame $fr"
                if {$fr >= $skipFrame} {
                    incr num2
                }
                # Remember event for later
                lappend permeateDownwards $x $y
            }
        } elseif {abs($oldLab) > 1} {
            set newLab [expr $oldLab / 2]
        } else {
            set newLab $oldLab
        }
        lappend labelList $newLab
    }
}

Теперь, когда у нас есть эти списки, мы можем попытаться распечатать их в файл, чтобы вы могли их отобразить:

set f [open "downwards.csv" w]
foreach {x y} $permeateDownwards {
    puts $f "$x,$y"
}
close $f

set f [open "upwards.csv" w]
foreach {x y} $permeateUpwards {
    puts $f "$x,$y"
}
close $f

Существует множество инструментов, которые могут отображать ряд точек в CSV, и вы можете посмотреть на это и посмотреть, является ли то, что у вас есть, по крайней мере разумным.

person Donal Fellows    schedule 02.07.2020
comment
Я оставлю маркировку точек в качестве упражнения. Действительно, есть намного больше информации, которую вы можете восстановить, отслеживая положение молекул во времени. Но жизненно важно проверить, доступна ли основная информация, иначе вы никогда не разберетесь в ней. (Я предположил, что координаты X и Y просто доступны, но мне это кажется разумным предположением.) - person Donal Fellows; 02.07.2020
comment
Кроме того, если бы я делал это для себя, я бы посмотрел на вывод всей информации о маркировке и позиционировании в базу данных (например, SQLite) для большей управляемости и транспортабельности. - person Donal Fellows; 02.07.2020