コード例 #1
0
    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()
コード例 #2
0
    }             // 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()
コード例 #3
0
    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);
    }
コード例 #4
0
    // 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()