Sure. In FlyBase each gene has an associated symbol and name and each type (symbol and name) can have synonyms that track past identities. What I want is to have one input box (filter) that queries symbol synonyms and one that queries name synonyms.
In mySQL I was planning to implement this data essentially the same as it is in Chado currently. That is one table, called 'synonym' in Chado, that has a name field to store the value and a type field that distinguishes between a name synonym and a symbol synonym. Is it possible to do this without splitting up each synonym type into individual dimension tables? Thanks, Josh Arek Kasprzyk wrote: > > On 4 Apr 2007, at 21:49, Josh Goodman wrote: > >> >> >> I just realized that I hadn't properly thought this through. The >> problem with >> this approach is that it creates a conflicting set of filter >> collections. So if >> you wanted to query for records that had a certain GenBank id and a >> certain >> UniProt id you can't do it because the database name filter on each >> collection >> clash. >> >> This specific type of query probably isn't very common but I was >> hoping to use >> this as a general design principle for other dm tables and it would be >> a problem >> there. Partitioning up things as you mentioned earlier isn't an >> approach I wish >> to take because I would end up with close to 1,000 dm tables for all >> the data >> sets I need to implement. >> > > Hi Josh, > could you give us a couple of concrete examples of the questions that you > want to ask (from the user perspective) eg. in the form of > 'give me all genes with uniprot ids but not genbank ids' etc? > This would help us to understand the problem and > perhaps there are other ways of achieving the same functionality. > > > a. > > >> I'll need to sleep on this some more. >> >> Thanks, >> Josh >> >> Josh Goodman wrote: >>> Hi Richard, >>> >>> Ok I think I've confused myself and probably you by going down the >>> push action >>> track. I think what I want to do can be simplified down to creating >>> one filter >>> collection for each dbxref type. Each collection would contain 2 >>> filters, one >>> for the accession and one for the database name. As you said, I can >>> set the >>> defaultValue of the name filter to UniProt, GenBank, or whatever. >>> >>> I've done this and it works well. However, this filter is visible >>> and open to >>> user editing. What I would like to do is hide the database name >>> filter with the >>> default value. Something along the lines of turning it into an html >>> input >>> element of type 'hidden' with my default value. I thought this could be >>> accomplished by setting the hidden or hideDisplay properties of this >>> filter but >>> that doesn't work. Enabling hidden just removes it completely from the >>> interface and also removes its constraint from the query. Enabling >>> hideDisplay >>> doesn't seem to do anything. >>> >>> Can you tell me what the hidden and hideDisplay properties are >>> supposed to do >>> and whether I can use them to accomplish what I describe above? >>> >>> Thanks, >>> Josh >>> >>> Richard Holland wrote: >>>> Hi Josh. >>>> >>>> What you seem to be attempting is to always force your database name >>>> filter to be turned on in MartView, and to give it a default >>>> unchangeable >>>> value of UniProt. You then want to make this filter invisble so that >>>> the >>>> user cannot see or change it, but it remains in force for all >>>> queries and >>>> cannot be turned off. This in effect causes your other filter, the >>>> accession filter, to only ever search for UniProt accessions and ignore >>>> all others. >>>> >>>> Whilst it is possible to specify default filters and assign default >>>> values >>>> to them so that they are always turned on when a user starts a new >>>> query, >>>> it is currently not possible to prevent the user from subsequently >>>> deselecting them or from changing the filter value. >>>> >>>> Push actions wouldn't be much help here. They are intended for >>>> controlling >>>> multiple drop-downs where legal values in one drop down depend on what >>>> value has been selected in another. >>>> >>>> The always-on filter idea is already on our list of things to >>>> implement in >>>> future. >>>> >>>> What you could do instead for now is to divide up (partition) your >>>> dimension table so that it becomes several separate dimension >>>> tables, each >>>> one containing accessions from only one database type. You could >>>> then hide >>>> all attributes and filters from the dimensions relating to database >>>> types >>>> that you don't want the user to see, leaving only those from the >>>> UniProt >>>> dimension visible. This would achieve the effect you are looking for by >>>> effectively removing the need for a database type filter altogether. >>>> >>>> If you haven't done so yet, have a look at the MartBuilder tool to >>>> see if >>>> it can help you with your dataset design. It allows things like the >>>> partitioning described above to be implemented really easily, and >>>> automatically generates all the SQL you need to create the dataset >>>> tables. >>>> It's part of the martj package, which you can download from the same >>>> web >>>> pages and CVS servers as biomart-perl. >>>> >>>> cheers, >>>> Richard >>>> >>>> On Tue, April 3, 2007 9:30 pm, Josh Goodman wrote: >>>>> I am running into some problems while trying to implement push >>>>> actions and >>>>> I am >>>>> not sure that they are the appropriate way to accomplish my end >>>>> goal so >>>>> let me >>>>> describe what I'm trying to do first. >>>>> >>>>> I have a dimension table that holds database cross references for >>>>> various >>>>> databases. Each row in this table has the accession number and the >>>>> database >>>>> name as columns. The main table is in a 1:M relationship with the >>>>> dbxref_dm table. >>>>> >>>>> What I would like to do is setup a simple text field filter that >>>>> queries a >>>>> subset of this data e.g. only GenBank accessions. What I'm trying >>>>> not to >>>>> do is >>>>> have a drop down list of database names and a text field for the >>>>> accession. >>>>> >>>>> I started out by making two filters, one a drop down list of database >>>>> names and >>>>> the other a simple text input box that filters on the accession >>>>> column of >>>>> the >>>>> dbxref table. Then I tried to place a push action on the text input >>>>> filter so >>>>> that when it is enabled, the database filter is automatically set to >>>>> whatever >>>>> database name I want for the input box. For example, if I have a >>>>> text box >>>>> for >>>>> UniProt accessions it would set the database filter to UniProt when >>>>> enabled. I >>>>> tried this both via the Mart Editor gui and straight XML (see >>>>> below) and >>>>> both >>>>> failed. Once this was working I was going to try to hide the database >>>>> name >>>>> filter so end users only saw the UniProt input box in the MartView. >>>>> >>>>> Any help is greatly appreciated. >>>>> >>>>> Thanks, >>>>> Josh >>>>> >>>>> >>>>> <FilterGroup displayName="dbxref" internalName="dbxref"> >>>>> <FilterCollection displayName="Database" >>>>> internalName="db"> >>>>> <FilterDescription displayName="Database" >>>>> displayType="list" >>>>> field="db" >>>>> internalName="db_filter" key="id_key" >>>>> legal_qualifiers="=" >>>>> qualifier="=" style="menu" >>>>> tableConstraint="dbxref__dm" type="list"> >>>>> <Option displayName="GenBank" internalName="GB" >>>>> isSelectable="true" value="GB" /> >>>>> <Option displayName="UniProt" >>>>> internalName="uniprot" >>>>> isSelectable="true" value="UniProt" /> >>>>> </FilterDescription> >>>>> </FilterCollection> >>>>> <FilterCollection displayName="UniProt" >>>>> internalName="uniprot_acc"> >>>>> <FilterDescription displayName="UniProt" >>>>> displayType="text" >>>>> field="accession" >>>>> internalName="accession_filter" key="id_key" >>>>> legal_qualifiers="=,like" qualifier="like" >>>>> tableConstraint="dbxref__dm" type="text"> >>>>> <PushAction internalName="dbxref_db_push" >>>>> ref="db_filter"> >>>>> <Option displayName="UniProt" >>>>> internalName="uniprot" >>>>> isSelectable="true" value="uniprot" /> >>>>> </PushAction> >>>>> </FilterDescription> >>>>> </FilterCollection> >>>>> </FilterGroup> >>>>> >>>> >>> >>> > > > ------------------------------------------------------------------------------- > > Arek Kasprzyk > EMBL-European Bioinformatics Institute. > Wellcome Trust Genome Campus, Hinxton, > Cambridge CB10 1SD, UK. > Tel: +44-(0)1223-494606 > Fax: +44-(0)1223-494468 > ------------------------------------------------------------------------------- > > >
