Transforming XML file: NeuroMLFiles/Examples/ChannelML/KChan_KineticScheme.xml using XSL file: NeuroMLFiles/Schemata/v1.7.3/Level2/ChannelML_v1.7.3_GENESIStab.xsl

View original file before transform

Converting the file: KChan_KineticScheme.xml

// This is a GENESIS script file generated from a ChannelML v1.7.3 file
// The ChannelML file is mapped onto a tabchannel object


// Units of ChannelML file: Physiological Units, units of GENESIS file generated: SI Units

/*
    Example of 5 state kinetic scheme K conductance specified in ChannelML.
*/

function make_KChannelKS

        /*
            K conductance with 5 kinetic states. NOTE: currently a mapping is only provided
                    to the NEURON Channel Builder format and PSICS
        */
        

        str chanpath = "/library/KChannelKS"

        if ({exists {chanpath}})
            return
        end
        
        create tabchannel {chanpath}
            

        setfield {chanpath} \
            Ek -0.077 \
            Ik 0 \
            Xpower 1
        
        setfield {chanpath} \
            Gbar 360 \
            Gk 0

        
        // No Q10 temperature adjustment found
        float temp_adj_n = 1
    

        float tab_divs = 400

        float v_min = -0.1

        float v_max = 0.1

        float v, dv, i
        

        // Creating table for gate n, using name X for it here

        float dv = ({v_max} - {v_min})/{tab_divs}

        
        call {chanpath} TABCREATE X {tab_divs} {v_min} {v_max}
                

        v = {v_min}

            

        for (i = 0; i <= ({tab_divs}); i = i + 1)
        
            // Looking at rate: alpha_n0_n1
                
            float alpha_n0_n1
                
            float A, B, Vhalf
                         
            // ChannelML form of equation: alpha_n0_n1 which is of form exp_linear, with params:
            // A = 0.4, B = 10, Vhalf = -55, in units: Physiological Units
            A = 0.4 // Warning: unrecognised rate variable! Don't know how to convert units!
                
            B = 0.01
            Vhalf = -0.055
            

            if ( {abs {(v - Vhalf)/ B}} < 1e-6)
                alpha_n0_n1 = A * (1 + (v - Vhalf)/B/2)
            else
                alpha_n0_n1 = A * ((v - Vhalf) / B) /(1 - {exp {-1 * (v - Vhalf)/B}})
            end

        
            // Looking at rate: beta_n0_n1
                
            float beta_n0_n1
                
            float A, B, Vhalf
                         
            // ChannelML form of equation: beta_n0_n1 which is of form exponential, with params:
            // A = 0.125, B = -80, Vhalf = -65, in units: Physiological Units
            A = 0.125 // Warning: unrecognised rate variable! Don't know how to convert units!
                
            B = -0.08
            Vhalf = -0.065
            beta_n0_n1 = A * {exp {(v - Vhalf) / B}}
        
            // Looking at rate: alpha_n1_n2
                
            float alpha_n1_n2
                
            float A, B, Vhalf
                         
            // ChannelML form of equation: alpha_n1_n2 which is of form exp_linear, with params:
            // A = 0.3, B = 10, Vhalf = -55, in units: Physiological Units
            A = 0.3 // Warning: unrecognised rate variable! Don't know how to convert units!
                
            B = 0.01
            Vhalf = -0.055
            

            if ( {abs {(v - Vhalf)/ B}} < 1e-6)
                alpha_n1_n2 = A * (1 + (v - Vhalf)/B/2)
            else
                alpha_n1_n2 = A * ((v - Vhalf) / B) /(1 - {exp {-1 * (v - Vhalf)/B}})
            end

        
            // Looking at rate: beta_n1_n2
                
            float beta_n1_n2
                
            float A, B, Vhalf
                         
            // ChannelML form of equation: beta_n1_n2 which is of form exponential, with params:
            // A = 0.25, B = -80, Vhalf = -65, in units: Physiological Units
            A = 0.25 // Warning: unrecognised rate variable! Don't know how to convert units!
                
            B = -0.08
            Vhalf = -0.065
            beta_n1_n2 = A * {exp {(v - Vhalf) / B}}
        
            // Looking at rate: alpha_n2_n3
                
            float alpha_n2_n3
                
            float A, B, Vhalf
                         
            // ChannelML form of equation: alpha_n2_n3 which is of form exp_linear, with params:
            // A = 0.2, B = 10, Vhalf = -55, in units: Physiological Units
            A = 0.2 // Warning: unrecognised rate variable! Don't know how to convert units!
                
            B = 0.01
            Vhalf = -0.055
            

            if ( {abs {(v - Vhalf)/ B}} < 1e-6)
                alpha_n2_n3 = A * (1 + (v - Vhalf)/B/2)
            else
                alpha_n2_n3 = A * ((v - Vhalf) / B) /(1 - {exp {-1 * (v - Vhalf)/B}})
            end

        
            // Looking at rate: beta_n2_n3
                
            float beta_n2_n3
                
            float A, B, Vhalf
                         
            // ChannelML form of equation: beta_n2_n3 which is of form exponential, with params:
            // A = 0.375, B = -80, Vhalf = -65, in units: Physiological Units
            A = 0.375 // Warning: unrecognised rate variable! Don't know how to convert units!
                
            B = -0.08
            Vhalf = -0.065
            beta_n2_n3 = A * {exp {(v - Vhalf) / B}}
        
            // Looking at rate: alpha_n3_n
                
            float alpha_n3_n
                
            float A, B, Vhalf
                         
            // ChannelML form of equation: alpha_n3_n which is of form exp_linear, with params:
            // A = 0.1, B = 10, Vhalf = -55, in units: Physiological Units
            A = 0.1 // Warning: unrecognised rate variable! Don't know how to convert units!
                
            B = 0.01
            Vhalf = -0.055
            

            if ( {abs {(v - Vhalf)/ B}} < 1e-6)
                alpha_n3_n = A * (1 + (v - Vhalf)/B/2)
            else
                alpha_n3_n = A * ((v - Vhalf) / B) /(1 - {exp {-1 * (v - Vhalf)/B}})
            end

        
            // Looking at rate: beta_n3_n
                
            float beta_n3_n
                
            float A, B, Vhalf
                         
            // ChannelML form of equation: beta_n3_n which is of form exponential, with params:
            // A = 0.5, B = -80, Vhalf = -65, in units: Physiological Units
            A = 0.5 // Warning: unrecognised rate variable! Don't know how to convert units!
                
            B = -0.08
            Vhalf = -0.065
            beta_n3_n = A * {exp {(v - Vhalf) / B}}
        

            // Evaluating the tau and inf expressions

                    
            float tau = 1/(temp_adj_n * (alpha + beta))
                        
            float inf = alpha/(alpha + beta)
                    

            
            // Working out the "real" alpha and beta expressions from the tau and inf
            
            float alpha
            float beta
            alpha = inf / tau
            beta = (1- inf)/tau
            
            
            setfield {chanpath} X_A->table[{i}] {alpha}
            setfield {chanpath} X_B->table[{i}] {alpha + beta}

                

            v = v + dv

        end // end of for (i = 0; i <= ({tab_divs}); i = i + 1)

        

      

        setfield {chanpath} X_A->calc_mode 1 X_B->calc_mode 1


        


end

Time to transform file: 0.078 secs