public VectorProteinInterfacePart(VectorProteinInterfacePart vectorProteinInterfacePart) : this( vectorProteinInterfacePart.FullProteinInterfaceId, vectorProteinInterfacePart.InteractionAminoAcids1L, vectorProteinInterfacePart.InteractionFlagBools, vectorProteinInterfacePart.InteractionNonProteinInterfaceAminoAcids1L, vectorProteinInterfacePart.InteractionToNonProteinInterface, vectorProteinInterfacePart.ResidueId, vectorProteinInterfacePart.SourceAminoAcid1L, vectorProteinInterfacePart.SourceAminoAcid3L ) { if (vectorProteinInterfacePart == null) { throw new ArgumentNullException(nameof(vectorProteinInterfacePart)); } }
/* * private static int[] LastPdbChainResidueIndexes(string pdbFilename) * { * //var result = new Dictionary<string,int>(); * var pdbFile = new ProteinDataBankFile(pdbFilename, new []{ ATOM_Record.ATOM_Field.FieldName }); * * //var x = ProteinDataBankFileOperations.PdbAtomAcidList(); * * var atomList = pdbFile.ProteinDataBankFileRecordList.Where(a => a.GetType() == typeof (ATOM_Record)).Select(a=>(ATOM_Record)a).ToList(); * * var chainIdList = atomList.Select(a=>a.chainID.FieldValue.ToUpperInvariant()).Distinct().ToList(); * * var result = new int[chainIdList.Count]; * * for (int index = 0; index < chainIdList.Count; index++) * { * var chainId = chainIdList[index]; * var maxResidueIndex = atomList.Where(a => a.chainID.FieldValue.ToUpperInvariant() == chainId).Select(a => int.Parse(a.resSeq.FieldValue)).Max(); * * result[index] = maxResidueIndex; * } * * return result; * } */ private static VectorProteinInterfaceWhole MakeVectorProteinInterfaceWhole(string pdbFilename, ProteinInterfaceSequenceAndPositionData proteinInterfaceSequenceAndPositionData, bool reversedSequence, bool reversedInteractions) { if (pdbFilename == null) { throw new ArgumentNullException(nameof(pdbFilename)); } if (proteinInterfaceSequenceAndPositionData == null) { throw new ArgumentNullException(nameof(proteinInterfaceSequenceAndPositionData)); } ProteinInterfaceAminoAcidMetaData[] proteinInterfaceAminoAcidMetaDataArray = proteinInterfaceSequenceAndPositionData.AminoAcidSequenceAllResidueSequenceIndexes; var vectorProteinInterfaceWhole = new VectorProteinInterfaceWhole { FullProteinInterfaceId = new FullProteinInterfaceId(proteinInterfaceSequenceAndPositionData.FullProteinInterfaceId), ProteinInterfaceLength = proteinInterfaceSequenceAndPositionData.ProteinInterfaceLength, FirstResidueSequenceIndex = proteinInterfaceSequenceAndPositionData.StartPosition, LastResidueSequenceIndex = proteinInterfaceSequenceAndPositionData.EndPosition, ReversedInteractions = reversedInteractions, ReversedSequence = reversedSequence, }; //vectorProteinInterfaceWhole.FullSequenceLength = LastPdbChainResidueIndexes(pdbFilename)[vectorProteinInterfaceWhole.FullProteinInterfaceId.ChainId]; vectorProteinInterfaceWhole.SecondaryStructure = ProteinInterfaceSecondaryStructureLoader.ProteinInterfaceSecondaryStructure(pdbFilename, SpreadsheetFileHandler.AlphabetLetterRollOver(vectorProteinInterfaceWhole.FullProteinInterfaceId.ChainId), vectorProteinInterfaceWhole.FirstResidueSequenceIndex, vectorProteinInterfaceWhole.LastResidueSequenceIndex, vectorProteinInterfaceWhole.ReversedSequence); for (int proteinInterfaceAminoAcidMetaDataArrayIndex = 0; proteinInterfaceAminoAcidMetaDataArrayIndex < proteinInterfaceAminoAcidMetaDataArray.Length; proteinInterfaceAminoAcidMetaDataArrayIndex++) { ProteinInterfaceAminoAcidMetaData proteinInterfaceAminoAcidMetaData = proteinInterfaceAminoAcidMetaDataArray[proteinInterfaceAminoAcidMetaDataArrayIndex]; var vectorProteinInterfacePart = new VectorProteinInterfacePart(proteinInterfaceAminoAcidMetaData.OppoproteinInterfaceInteractions.Length) { FullProteinInterfaceId = new FullProteinInterfaceId(proteinInterfaceSequenceAndPositionData.FullProteinInterfaceId), ResidueId = proteinInterfaceAminoAcidMetaDataArrayIndex, SourceAminoAcid1L = proteinInterfaceAminoAcidMetaData.ResidueName1L, SourceAminoAcid3L = proteinInterfaceAminoAcidMetaData.ResidueName3L, InteractionAminoAcids1L = proteinInterfaceAminoAcidMetaData.ProteinInterfaceInteractionResidueNames1L, InteractionNonProteinInterfaceAminoAcids1L = proteinInterfaceAminoAcidMetaData.NonProteinInterfaceInteractionResidueNames1L, InteractionFlagBools = new bool[proteinInterfaceAminoAcidMetaData.OppoproteinInterfaceInteractions.Length] }; vectorProteinInterfaceWhole.VectorProteinInterfacePartList.Add(vectorProteinInterfacePart); Array.Copy(proteinInterfaceAminoAcidMetaData.OppoproteinInterfaceInteractions, vectorProteinInterfacePart.InteractionFlagBools, proteinInterfaceAminoAcidMetaData.OppoproteinInterfaceInteractions.Length); if (reversedInteractions) { Array.Reverse(vectorProteinInterfacePart.InteractionFlagBools); } vectorProteinInterfacePart.InteractionToNonProteinInterface = proteinInterfaceAminoAcidMetaData.ProteinInterfaceInteractionType.HasFlag(ProteinInterfaceInteractionType.InteractionWithNonProteinInterface); } if (vectorProteinInterfaceWhole.ReversedSequence) { vectorProteinInterfaceWhole.VectorProteinInterfacePartList.Reverse(); } return(vectorProteinInterfaceWhole); }