profile for Sanjay Manohar on Stack Exchange

I am involved in several programming projects, which can be accessed from this web page. I program in many languages; I sometimes think I enjoy learning the languages more than I enjoy programming in them. To date, I use QBasic, Visual Basic, BBC Basic, 80x86 assembly, 65C02 assembly (and on occasion, machine code), ARM assembly, C, C++, JavaScript, Java, Pascal, Perl, Mathematica, MATLAB, Python many other lesser script languages, and very very rarely, Forth.

  • HOM

    HOM is a complex and ongoing project to simulate the whole of human physiology on a computer. The idea is based around a system of interacting objects representing the Heart, Lung, Vessels, Kidney, Brain, Stomach etc., each of which perform calculations to simulate the physiological processes of the body.
    Hom is currently used in the Physiology Department at Cambridge University in undergraduate physiology classes .

  • Neurolab

    This is a conversion into Java of a Visual Basic original program by Roger Carpenter. The software accompanies Roger's book "Neurophysiology", an excellent introduction to neurophysiology at the undergraduate level. Roger was my Director of Studies at Cambridge, and researches saccadic eye movements.

  • Neurology model

    This software helps medical students (and perhaps neurology trainees) to understand neuroanatomy and how it relates to normal neurological function, abnormal neurological function, and examination findings in patients. It is a physical and physiological interactive model of the central and peripheral nervous system, which allows you to create lesions and dynamically see the clinical signs.
    In particular there are models of
    • Visual fields
    • Pupillary reflexes
    • Saccades, smooth pursuit and eye muscles
    • Facial, tongue and palate muscles
    • Power and deep tendon reflexes in the limbs
    • Dermatomes and sensory nerves
    • Upper limb movement incoordination, focal weakness, and bradykinesia
    It contains an internal model of the connections between areas and how they cause each of the clinical signs. Each named region can be quantitatively lesioned by selecting it and using the slider at the bottom of the screen. Any number of regions can be lesioned at a time, and the combination of lesions is fed into the simulation. Each examination finding is calculated from whether signals can pass through each region necessary for the given function.

  • Medical browser

    This is a four-way linked list database. Each record represents a medical entity of some kind, and is connected to other items in four directions: cause, effect, parent and child. Each item has usually one or two parents, indicating what 'kind' of entity it is, and has several children, representing subtypes of this item. It also has an arbitrary number of causes and effects. In addition, items have synonyms and some have a short descriptive text attached.

    The database allows you to run complex querys such as, 'find items that are children (directly or indirectly) of "Pathology", and whose chain of effects includes the item "Pruritus" within a depth of 4 recursions.'
    Gradually being incorporated is statistical knowledge of cause and effect. The database is now stored on a central server and downloaded when the program is run. With a password, data can be uploaded back to the server. Run the medical browser as a web app, as a downloadable Java application, Java in the browser, or just browse the server-side data. The index of all medical entities contains 5156 items!

  • Cudos

    Cudos is a project undertaken by a group of students of physiology at Cambridge University. The aim is to aid teaching of students after A-levels, before they come to University. The project aims to bring all students up to a uniform level of knowledge of basic sciences, to help with teaching at University.
    The modules covered will be Chemistry, Physics, Biology and Mathematics. Interesting exhibits include
    • Formula graph: Sketch any combination of mathematical functions - and dynamically see how arbitrary parameters affect them
    • Signal processing: Chain together components to dynamically process and filter an analogue signal
    • Ripple tank Experiment with waves in a pool, showing how reflection, diffraction and refraction interact
    • Circuit board Place electrical components on a breadboard to create interactive circuits
    • Spring mechanics Attach springs, masses and dashpots to create dynamic models
    • Genetics Mate arbitrary individuals with each other! See how the genotype affects the phenotype, in several modes of inheritance.
    • Membrane transport processes Simulate the movement of solute particles in a solution across a semi-permeable membrane.
    • Iron filings Drop iron filings over magnetic poles to reveal magnetic field lines
    • Basilar membrane See how resonance causes specific regions of the membrane to react to motion
    • Photoreceptors See how different photoreceptors react to light of different frequencies to generate three-colour vision
  • Jazz Improviser

    A 2003 attempt to produce a computerised spontaneous Jazz improvisation.
  • Sanjay's Piano

    This is a simple Java piano applet - but with a difference! It was written in the space of 48 hours and aims to test a few experimental ideas.
  • Sanjay's Custom Iterator for Inkscape

    is an Inkscape extension that permits on-the-fly scripting in Python. If you are like graphics, and you can program, then this is for you!