I thought I'd move these answers to competitor questions from comments to a post.
1. Can we come up with our own textual representation/grammar?
A) This could be an eXtreme Programming 'first make it run, then make it right' approach: start with the simplest language that can possibly work and evolve it to the requirement as you go, simplifying or altering any parts of the standard text form you find hard to code, or hard to understand, when you first meet them.
What I'm thinking is that the language you start with is actually
rather like the standard form but with your choices for any parts that
are not easy to generate or are not immediately clear to understand:
doing the task will make things clear, so generating standard text
output (and input) will be easier in retrospect. It could be a fast later / final stage to tweak your parser to reading and writing the specified text language, because:
- solving the problem for your chosen text form might make it easy to grasp how the specified standard addresses the same issues
- having running code, objects and visuals to look at would also make it easier
When the app is delivered, a requirement is that the user has to be able to generate a text string in the standard form from their input state. They must also be able to enter a text expression in standard form and see it in the app. An otherwise impressive app that was not perfect in its generation could still be a contender, but only if I think the imperfections are fixable by the finalist between submission and final, so you need to be a good first approximation.
However if you find making your own choices for bits of the grammar helps you make progress, by all means start that way.
B) This could be a great way to handle the fact that I am your customer and I am only available via email (and not always same-day response either :-). Start by being your own customer for the text part and treat me as the customer later, e.g. when you have a good grasp of the domain, 90%+ of your generated text looks OK, and you just need to understand what the text standard wants for some particular case.
C) You may find yourself thinking that your language is (would be) more expressive overall, not just a coding speedup trick. I'm no advocate for the standard form; the problem exists because it is a poor way to describe these state. That is largely because text is a poor form for describing visual information, but I have no warrant to claim the existing standard is the best possible. That said, be aware:
- at the end of the task, your app must be able to generate standard form output at some stage in its process
- you will be a much better judge of what is good or bad text for this after you have made progress on the app
So if you do this, I suggest you see it simply as an XP-style 'make it run, then make it right' approach and form your opinion about which grammar is better at the end.
D) My suggested approach in the main post:
- generate the individual expressions as you implement those operations in the app
- don't try to become an expert on the whole specified language before starting
is also XP-style: build a simple app that can handle insertions, then add translocations, then add balance/unbalance, weird stuff, and generate the increasingly complex text fragments as you go.
2. Do we start out with *the* standard normal chromosome state (i.e. the universal pattern of bands/subbands for humans), or can we assume our own 'normal' state?
The delivered app must be able to start from the standard banding pattern.
- The ability to accomodate different standard banding patterns, which future research may require, is a definite bonus (mentioned in my marking notes).
- The ability to start from an abnormal state, so recording a change relative to that state instead of to the standard start point, could also be a bonus. I didn't mention this in my notes; it would not be a significant point. There is a research use of exploring the multiple stages by which a very complex state might be reached. It might be natural to code your app with the start point as a configuration that you could then replace with any other you had entered. It might; and there again, it might not. I'm very happy to get this feature. It would not score major bonus points.
Hope this helps. Good luck.