If you do not have a turnkey application for this problem, it is a typical application for a Cheminformatics Scripting Toolkit, such as our Cactvs software (see www.xemistry.com/academic for free academic packages)..
The approach is simple: Read the file, match a proline substructure, and compute the torsion angle of the relevant matched atoms:
Here is a sample solution with the default Tcl interface language of the toolkit:
(The test PDB file with cis and trans proline fragments is from here)
set st [molfile read PRO-CONF.PDB]
# create proline substructure with C(=O)C stub.
# substructure atoms 1,2,4 and 5 are the atoms defining the torsion (atom 3 is the amide O)
set ss [ens create CC(=O)N1C(C=O)CCC1 smarts]
# match the substructure and capture the atom mappings
match ss -mode all $ss $st amap
# loop over all matches and compute the torsion angles
foreach match $amap {
lassign [unzip $match 1] a1 a2 a3 a4 a5
set torsion [atom torsion $st $a1 $a2 $a4 $a5]
if {range($torsion,-10,10)} {
puts "link $a1 $a2 $a4 $a5 is cis"
} else {
puts "link $a1 $a2 $a4 $a5 is trans"
}
}
And in the current releases of the toolkit you can now also use Python as an alternative interface language, thanks to sponsorship by Vertex Inc:
st=Molfile.Read('PRO-CONF.PDB')
ss=Ens('CC(=O)N1C(C=O)CCC1','smarts')
match('ss',ss,st,mode='all',atommapvariable='amap')
for match in amap:
statoms=unzip(match,1)
torsion=statoms[0].torsion(statoms[1],statoms[3],statoms[4])
if torsion>=-10 and torsion<=10:
print("link",statoms[0],statoms[1],statoms[3],statoms[4],"is cis")
else:
print("link",statoms[0],statoms[1],statoms[3],statoms[4],"is trans")