Losealot
Beachboy
Sinds 24/9/2004
T: 55
R: 1358
|
18/3/2005 -
20:11u
| Quote
|
Ik heb een Java-project die onderandere moet zorgen voor de visualistie van RNA door middel van gekleurde balkjes een onderdeel hiervan is het vergelijken van rna strengen van verschillende organismen. een functie hiervan is dat het de verschillen aanduid tussen de balkjes in een ander kleur. mijn vraag is hoe ik het simpelste die verschillen kan zien, de RNA streng is 200 tekens lang en wordt intern opgelslagen als een String met C,G,A en U. dus ik moet strings vergelijken en de index van de verschillende tekens terug krijgen
alvast bedankt
|
WishMaster
[mod] 666
Sinds 26/2/2003
T:99 -
R:2018
|
18/3/2005 -
20:28u
| Quote
|
n00B-anwtoord (ken niks van Java) -->
For IntA = 1 to 200 codon(IntA) = left(HeleString, IntA) Next IntA
Op die manier gaat hij alles af en steekt da in een array
*edit: codon(IntA) is een string... (Codon1, codon2, codon3,...) (een codon zijn 3 basen bijeen = A, T, C of G)
P.S: vraag eens aan de "Phil", da is zo ne Java-freak
Laatst aangepast door
WishMaster
op 18/03/2005 20:53:10u
(2x aangepast)
|
Losealot
Beachboy
Sinds 24/9/2004
T:55 -
R:1358
|
18/3/2005 -
20:37u
| Quote
|
ja mr das met een for lus, kheb al eens in de API gekeken en gezocht naar een compare die een array van int terug gaf met de verschillen maar tot zover hebbek niets gevonden
btw: kheb uw code nie helemaal naar java kunnen vertalen, wat doet die cordon?
Laatst aangepast door
Losealot
op 18/03/2005 20:45:46u
(1x aangepast)
|
Losealot
Beachboy
Sinds 24/9/2004
T:55 -
R:1358
|
18/3/2005 -
20:52u
| Quote
|
 Bron: © http://img55.exs.cx/img55/1416/compare8wc.jpg
je ziet op positie 150 dat de strengen verschillend zijn en dus worden aangeduid, screenshot komt uit project opgave
Laatst aangepast door
Losealot
op 18/03/2005 22:52:41u
(1x aangepast)
|
Devil Hack
wzl-lid
Sinds 9/6/2004
T:1 -
R:14
|
19/3/2005 -
9:43u
| Quote
|
Hm, 't kan toch nie zo moeilijk zijn om da in een for-luske te steken?
boolean[] arrayVerschil = new boolean(200);
for (int i = 0; i < 200; i++) { if (array1 != array2) { arrayVerschil = true; } else { arrayVerschil = false; } }
met array1 & array2 u arrays van integers en arrayVerschil uiteraard nen array van booleans. 'T moet zeker beter kunnen, want nu gaat uwe arrayVerschil gewoon telkens true zijn als het verschilt, ipv een lijst te zijn van posities. Da kunt ge natuurlijk oplossen door na die for lus eerst het aantal keer true te tellen dat voorkomt in arrayVerschil en vervolgens ne nieuwe array van integers aan te maken met het aantal elementen gelijk aan het aantal maal true in arrayVerschil en dan arrayVerschil afgaan zoals dees of zo:
int j = 0; int[] arrayVerschilInt = new int(aantalTrue);
for (int i = 0; i < aantalTrue; i++) { if (arrayVerschil == true) { arrayVerschilInt[j] = i; j++; } }
Natuurlijk eerst een for luske om aantalTrue te weten.
Da's maar iets waar ik zo tijdelijk aan denk. Wrsch staan er wel fouten in, maar op deze manier zal het toch ongeveer werken denk ik. Er zullen wel snellere/betere manieren zijn, maar die moogt ge zelf zoeken .
|
Losealot
Beachboy
Sinds 24/9/2004
T:55 -
R:1358
|
19/3/2005 -
10:57u
| Quote
|
mijn voorlopig gedacht: ik zou men string van 2 keer 200 tekens omzetten in een array van chars, en dan met een for lus telkens de tekens vergelijken en de positie in een array steken, het enige probleem is dak nie weet hoelang die array zal zijn en één maken van 200 tekens om zeker te zijn lijkt me niet zo proper...
Laatst aangepast door
Losealot
op 19/03/2005 10:57:45u
(1x aangepast)
|
Ben Dover
wzl-lid
Sinds 24/1/2004
T:4 -
R:208
|
20/3/2005 -
11:31u
| Quote
|
Losealot schreef: mijn voorlopig gedacht: ik zou men string van 2 keer 200 tekens omzetten in een array van chars, en dan met een for lus telkens de tekens vergelijken en de positie in een array steken, het enige probleem is dak nie weet hoelang die array zal zijn en één maken van 200 tekens om zeker te zijn lijkt me niet zo proper...
Gebruik dan een vector
|
Losealot
Beachboy
Sinds 24/9/2004
T:55 -
R:1358
|
21/3/2005 -
18:16u
| Quote
|
kheb het probleempje voorlopig opgelost met een driedubbele geneste for-lus en een boolean array
|
Phil
Uberhacker
Sinds 23/2/2003
T:10 -
R:484
|
22/3/2005 -
12:50u
| Quote
|
Ben Dover schreef:
Losealot schreef: mijn voorlopig gedacht: ik zou men string van 2 keer 200 tekens omzetten in een array van chars, en dan met een for lus telkens de tekens vergelijken en de positie in een array steken, het enige probleem is dak nie weet hoelang die array zal zijn en één maken van 200 tekens om zeker te zijn lijkt me niet zo proper...
Gebruik dan een vector
Hmm, ik heb zo'n licht vermoeden dat een vector heel wat trager gaat zijn dan een int[200] - moest je het nodig hebben, gebruik dan een ArrayList (stuk sneller, tenzij je mt werkt, pak dan maar een vector (synchronized)).
|
Losealot
Beachboy
Sinds 24/9/2004
T:55 -
R:1358
|
22/3/2005 -
17:10u
| Quote
|
mss dat er iemand aan uit raakt zonder de andere klassen, da moet dus korter 
/** * maakt de array die zegt welke stukjes geinverteerd moeten getekend worden * @param lengte lengte van het getoonde rna strookje * TODO iets aan die 3 lussen doen */ public boolean[] compare(int lengte){ gelijk = new boolean[lengte]; //array initialiseren for(int i = 0; i < lengte; i++) //alle karakters van de rna string overlopen for(int j = 0; j < (lijst.length - 1) && !gelijk; j++) //elke rna strook met elkaar vergelijken for(int k = j + 1; k < lijst.length && !gelijk; k++) gelijk = (lijst[j].getRnaCode().charAt(positie[j]+i) != lijst[k].getRnaCode().charAt(positie[k]+i)); return gelijk; }
|
Phil
Uberhacker
Sinds 23/2/2003
T:10 -
R:484
|
23/3/2005 -
22:39u
| Quote
|
Ik probeer het deze nacht even na te kijken, zit nog met deadline op mn werk.
Hurray. 
Btw: wrom geen meerdimensionale array ? dat zal je loop serieus inkorten
Laatst aangepast door
Phil
op 23/03/2005 22:41:34u
(1x aangepast)
|
Losealot
Beachboy
Sinds 24/9/2004
T:55 -
R:1358
|
23/3/2005 -
23:56u
| Quote
|
kzie nie hoe ik daar een meer dimentionale array zou kunnen gebruiken, de enige tip dak van een assistent opgevangen heb is kijken wanneer ze allemaal gelijk zijn ipv verschillend
er wordt ons algemeen afgeraden om vectors te gebruiken, net zoals een switch bv
ik ga nu de database connectie schrijven, jammergenoeg een acces db gekregen
Laatst aangepast door
Losealot
op 23/03/2005 23:56:40u
(1x aangepast)
|