void Start(){ low_score = 0; max_dist = 8; well_depth = 0.276; // for p1 protein p1MapScriptObject = p1ChildObject.GetComponent<MapCollidersToAtoms>(); p1CollidersArray = p1MapScriptObject.colliders_array; p1MaxAtoms = p1CollidersArray.Length; // for p2 protein p2MapScriptObject = p2ChildObject.GetComponent<MapCollidersToAtoms>(); p2MaxAtoms = p2MapScriptObject.colliders_array.Length; // for constraints p2Mask = LayerMask.GetMask(p2LayerName); colliderHits = new Collider[p2MaxAtoms]; } // end of Start()
} // end of VDWCalc2Loops() public void VDWCalcFinal() { max_dist = 8; well_depth = 0.276; // for p1 protein p1MapScriptObject = p1ChildObject.GetComponent <MapCollidersToAtoms>(); p1CollidersArray = p1MapScriptObject.colliders_array; p1MaxAtoms = p1CollidersArray.Length; // for p2 protein p2MapScriptObject = p2ChildObject.GetComponent <MapCollidersToAtoms>(); p2MaxAtoms = p2MapScriptObject.colliders_array.Length; // for constraints p2Mask = LayerMask.GetMask(p2LayerName); colliderHits = new Collider[p2MaxAtoms]; vdw_score_final = 0; for (int i = 0; i < p1MaxAtoms; i++) { p1Collider = p1CollidersArray[i]; maxCollidersHit = Physics.OverlapSphereNonAlloc(p1Collider.center + p1ParentObject.transform.position, (float)max_dist, colliderHits, p2Mask); for (int j = 0; j < maxCollidersHit; j++) { p2Collider = (SphereCollider)colliderHits[j]; center_dist = Vector3.Distance(p1Collider.center + p1ParentObject.transform.position, p2Collider.center + p2ParentObject.transform.position); if (center_dist < max_dist) { vdw_dist = p1Collider.radius + p2Collider.radius; A = Math.Pow(vdw_dist / center_dist, 12); B = Math.Pow(vdw_dist / center_dist, 6); pair_calc = 4 * well_depth * (A - B); vdw_score_final += pair_calc; } // end of if(p2-collider is close enough) { do pairwise calculation b/w p1-collider and p2-collider} } // end of for loop thru array of close enough p2-colliders Array.Clear(colliderHits, 0, p2MaxAtoms); } // end of for loop thru array of all p1-colliders } // end of VDWCalcFinal()
void Start() { protein2Name = "target"; low_score = 0.0; total_vdw_calc = 0.0; SetCountText(); max_dist = 8; well_depth = 0.276; protein1GameObject = GetComponent <MapCollidersToAtoms>(); protein1CollidersArray = protein1GameObject.colliders_array; protein1MaxAtoms = protein1CollidersArray.Length; protein2GameObject = p2GameObject.GetComponent <MapCollidersToAtoms>(); protein2CollidersArray = protein2GameObject.colliders_array; protein2MaxAtoms = protein2CollidersArray.Length; colliderHits = new Collider[protein2MaxAtoms]; protein2Mask = LayerMask.GetMask(protein2Name); }
// TEST CALC VARIABLES // // TEST CALC FUNCTIONS // public void VDWCalc2Loops() { max_dist = 8; well_depth = 0.276; // for p1 protein p1MapScriptObject = p1ChildObject.GetComponent <MapCollidersToAtoms>(); p1CollidersArray = p1MapScriptObject.colliders_array; p1MaxAtoms = p1CollidersArray.Length; // for p2 protein p2MapScriptObject = p2ChildObject.GetComponent <MapCollidersToAtoms>(); p2CollidersArray = p2MapScriptObject.colliders_array; p2MaxAtoms = p2CollidersArray.Length; vdw_score_2loops = 0; for (int i = 0; i < p1MaxAtoms; i++) { p1Collider = p1CollidersArray[i]; for (int j = 0; j < p2MaxAtoms; j++) { p2Collider = p2CollidersArray[j]; center_dist = Vector3.Distance(p1Collider.center + p1ParentObject.transform.position, p2Collider.center + p2ParentObject.transform.position); if (center_dist < max_dist) { vdw_dist = p1Collider.radius + p2Collider.radius; A = Math.Pow(vdw_dist / center_dist, 12); B = Math.Pow(vdw_dist / center_dist, 6); pair_calc = 4 * well_depth * (A - B); vdw_score_2loops += pair_calc; } // end of if(p2-collider is close enough) { do pairwise calculation b/w p1-collider and p2-collider} } // end of for loop thru array of all p2-colliders } // end of for loop thru array of all p1-colliders } // end of VDWCalc2Loops()